Skip to content

Conversation

@annawzz
Copy link

@annawzz annawzz commented Jan 12, 2017

Use complaint title to find complaint instead of using ID.


This change is Reviewable

@mykhaly
Copy link
Contributor

mykhaly commented Jan 13, 2017

Review status: 0 of 4 files reviewed at latest revision, 1 unresolved discussion.


op_robot_tests/tests_files/service_keywords.py, line 450 at r2 (raw file):

        return 0
    for index, element in enumerate(data):
        if element['title'] == complaintTitle:

Потенційне місце для помилки, якщо у скарги не буде title.
Щоб не було помилки, раджу зробити отаке:

...
if element.get('title', '') == complaintTitle:
...

Comments from Reviewable

@annawzz
Copy link
Author

annawzz commented Jan 13, 2017

Review status: 0 of 4 files reviewed at latest revision, 1 unresolved discussion.


op_robot_tests/tests_files/service_keywords.py, line 450 at r2 (raw file):

Previously, mykhaly (Yurii Mykhalchuk) wrote…

Потенційне місце для помилки, якщо у скарги не буде title.
Щоб не було помилки, раджу зробити отаке:

...
if element.get('title', '') == complaintTitle:
...

Справді так буде надійніше, дякую, поміняю asap.


Comments from Reviewable

@annawzz
Copy link
Author

annawzz commented Jan 18, 2017

Review status: 0 of 4 files reviewed at latest revision, 1 unresolved discussion.


op_robot_tests/tests_files/service_keywords.py, line 450 at r2 (raw file):

Previously, annawzz wrote…

Справді так буде надійніше, дякую, поміняю asap.

Done.


Comments from Reviewable

@mykhaly
Copy link
Contributor

mykhaly commented Jan 20, 2017

Review status: 0 of 4 files reviewed at latest revision, 1 unresolved discussion.


op_robot_tests/tests_files/service_keywords.py, line 450 at r2 (raw file):
Пробач, що морочу голову, але нещодавно дізнався нову інфу.
Існує в пітоні такий принцип, як EAFP:

Easier to ask for forgiveness than permission. This common Python coding style assumes the existence of valid keys or attributes and catches exceptions if the assumption proves false. This clean and fast style is characterized by the presence of many try and except statements. The technique contrasts with the LBYL style common to many other languages such as C.

Тобто, якщо в більшості випадків ключ має бути в присутній в словнику, то краще написати отак (код працюватиме швидше):

for index, element in enumerate(data):
        try:
            if element['title'] == complaintTitle:
                break
        except KeyError:
            pass

Якщо ж в більшості випадків ключ не присутній, то краще отак:

for index, element in enumerate(data):
        if element.get('title', '') == complaintTitle:
            break

Що використати в цій ситуації - вирішувати тобі.


Comments from Reviewable

@selurvedu
Copy link
Contributor

Review status: 0 of 4 files reviewed at latest revision, 1 unresolved discussion.


op_robot_tests/tests_files/service_keywords.py, line 450 at r2 (raw file):

Previously, mykhaly (Yurii Mykhalchuk) wrote…

Пробач, що морочу голову, але нещодавно дізнався нову інфу.
Існує в пітоні такий принцип, як EAFP:

Easier to ask for forgiveness than permission. This common Python coding style assumes the existence of valid keys or attributes and catches exceptions if the assumption proves false. This clean and fast style is characterized by the presence of many try and except statements. The technique contrasts with the LBYL style common to many other languages such as C.

Тобто, якщо в більшості випадків ключ має бути в присутній в словнику, то краще написати отак (код працюватиме швидше):

for index, element in enumerate(data):
        try:
            if element['title'] == complaintTitle:
                break
        except KeyError:
            pass

Якщо ж в більшості випадків ключ не присутній, то краще отак:

for index, element in enumerate(data):
        if element.get('title', '') == complaintTitle:
            break

Що використати в цій ситуації - вирішувати тобі.

Юр, я щось не можу зрозуміти – а яка у нашому конкретному випадку користь від такого except, якщо він робить лише pass?

І цей, чи не краще в element.get('title', '') замінити '' на None? Майданчики періодично віддають пусті рядки.


Comments from Reviewable

@mykhaly
Copy link
Contributor

mykhaly commented Jan 20, 2017

Review status: 0 of 4 files reviewed at latest revision, 1 unresolved discussion.


op_robot_tests/tests_files/service_keywords.py, line 450 at r2 (raw file):

Previously, selurvedu wrote…

Юр, я щось не можу зрозуміти – а яка у нашому конкретному випадку користь від такого except, якщо він робить лише pass?

І цей, чи не краще в element.get('title', '') замінити '' на None? Майданчики періодично віддають пусті рядки.

Користь в тому, що тест не завалиться, якщо не буде такого ключа.
Як на мене, то '' краще за None, бо це все-таки string. І хто його знає, може колись на ньому пробуватимуть викликати методи стрінга.
І ще, якщо замінити '' на None, то це буде те ж, що й просто element.get('title').


Comments from Reviewable

@selurvedu
Copy link
Contributor

op_robot_tests/tests_files/service_keywords.py, line 450 at r2 (raw file):

Користь в тому, що тест не завалиться, якщо не буде такого ключа.

То яка тоді відмінність від тої реалізації, що вже є?

І хто його знає, може колись на ньому пробуватимуть викликати методи стрінга.

Точно не в порівнянні типу element.get('title', '') == complaintTitle. :)

І ще, якщо замінити '' на None, то це буде те ж, що й просто element.get('title').

You're right.


Comments from Reviewable

@mykhaly
Copy link
Contributor

mykhaly commented Jan 20, 2017

Review status: 0 of 4 files reviewed at latest revision, 1 unresolved discussion.


op_robot_tests/tests_files/service_keywords.py, line 450 at r2 (raw file):

То яка тоді відмінність від тої реалізації, що вже є?

Швидше працює :) "...This clean and fast style..."

Точно не в порівнянні типу element.get('title', '') == complaintTitle. :)

You neva know, you neva know...


Comments from Reviewable

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants