Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Denis Petrovsky #20

Open
wants to merge 82 commits into
base: master
Choose a base branch
from
Open

Denis Petrovsky #20

wants to merge 82 commits into from

Conversation

vertden
Copy link

@vertden vertden commented Apr 24, 2019

No description provided.



def calculating(expression):
def parse(expression):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Для чего функции реализованы внутри другой функции?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Исправил

elif func and func in math_const:
yield math_const[func]

def infix_to_postfix(parsed_formula):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

я насчитал 10 yield конструкций на два генератора. Мало того, один генератор использует другой. В этом очень сложно разобраться. Желательно должен быть один return/yield в функции/генераторе.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Исправил

@AlexeiBuzuma
Copy link
Collaborator

файлы с байткодом (.pyc файлы) не должны лежать в репозитории

def infix_to_postfix(parsed_formula):
"""This function translate infix form into postfix form"""
stack = []
for token in parsed_formula:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Крайне похожее решение у Yury Kuznetsov @WFLM
местами код совпадает символ в символ

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Брал за основу статью с хабра
Если её переделать "под себя" и добавить поддержку математических функций и всего остального, что требуется в ДЗ, так нельзя?

Signed-off-by: Denis Petrovsky <[email protected]>
@AlexeiBuzuma
Copy link
Collaborator

Почти полное копирование кода из статьи: https://habr.com/ru/post/273253/

@vertden vertden changed the title [WIP] Denis Petrovsky Denis Petrovsky Jun 4, 2019

import re
import core
from constants import *
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

импорт через звездочку -- это зло

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Даже из собственного модуля, где лежат одни только константы?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, даже из своего модуля.

def check_brackets(expr):
"""Get expression. Check brackets balance"""
if expr.count('(') != expr.count(')'):
print("ERROR: brackets are not balanced")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Для этого лучше использовать исключения

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Спасибо за фидбек, постараюсь учесть все ошибки и в будущем так не делать

return function(*list_of_arg)


def comma_count(function):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а что, если у функции нет докстринга?

@@ -0,0 +1,125 @@
from constants import *
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

импорт через звездочку -- это зло

@AlexeiBuzuma
Copy link
Collaborator

  1. Сообщения коммитов в гите должны нести какой-то смысл изменения, которое было сделано в этом коммите. Сообщение something update не несет полезной информации.
  2. В Python есть замечательный механизм исключений, который позволяет удобным образом обрабатывать ошибки. Ошибки в качестве возвращаемого значения в функциях и простой print -- это плохое архитектурное решение.
  3. i, k, x -- все это магические переменные, которые не несут никакого смысла. Название переменной должно четко описывать ее задачу.
  4. Функции иногда тяжело читать из-за их размера и количества логики, которая содержиться в этих функциях. Советую в будущем больше внимание уделять на декомпозицию. Много маленьких функций намного лучше, чем несколько больших. Возможно использование ООП помогло бы сделать код более читаемым.

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

Successfully merging this pull request may close these issues.

3 participants