Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 20, 2016 16:25:11

python335
Зарегистрирован: 2016-10-19
Сообщения: 88
Репутация: +  -8  -
Профиль   Отправить e-mail  

Модуль Color v2.0

Впрочем, color v1.0 был вообще никакой.
Но я все поменял! Прошу прокомментировать!

 # Вот он))
def cprint(text, color='def'):
    str = ''
    fc = '\033['
    colors = {'def': '0m',
    'red': '91m',
    'under': '04m',
    'green': '32m',
    'blue': '94m',
    'cyan': '96m',
    'yellow': '93m',
    'magenta': '95m',
    'grey': '90m'
        }
    if color not in colors:
        # Покороче
        print(str + fc + colors['def'] + text)
    else:
        if color == 'under':
            print(str + fc + colors['under'] + text)
        else:
            print(str + fc + colors[color] + text)
def help():
    print('Цвета:'
        '\033[91m - red -\n'
        '\033[94m - blue -\n'
        '\033[96m - cyan -\n'
        '\033[93m - yellow \n'
        '\033[95m - magenta -\n'
        '\033[32m - green -\n\033[0m'
        ' - \033[04munder\033[0m -\n'
        '\033[90m - grey -\n')

Отредактировано python335 (Окт. 20, 2016 16:25:37)

Офлайн

#2 Окт. 20, 2016 18:02:23

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Модуль Color v2.0

1) переменная str - вообще никак не участвует в процессе - за коим чертом она там? но это еще фигня по сравнению со следующим пунктом
2) str - это внутренний класс для преобразования объекта в строку. Вы его переопределили как переменную - не стоит так делать. Объяснять надо почему ? Надеюсь что нет.
3)

python335
     if color not in colors:
        # Покороче
        print(str + fc + colors['def'] + text)
    else:
        if color == 'under':
            print(str + fc + colors['under'] + text)
        else:
            print(str + fc + colors[color] + text)
вся эта конструкция хрень полная!
В чем такая особенность цвета under ? Он присутствует в словаре - зачем его отдельно обрабатывать ?
Все это можно заменить простым:
 print(fc + colors.get(color, colors['def']) + text)
4) существует баг - если последняя выведенная на экран строка не имела color из доступных - то в консоли продолжает печатать цветом



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Окт. 20, 2016 18:04:08)

Офлайн

#3 Окт. 20, 2016 18:41:39

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Модуль Color v2.0

Сначала внимательно прочитать вот это
Потом ответить на вопрос: где же я нарушаю принцип DRY и исправить.



Офлайн

#4 Окт. 20, 2016 18:44:41

python335
Зарегистрирован: 2016-10-19
Сообщения: 88
Репутация: +  -8  -
Профиль   Отправить e-mail  

Модуль Color v2.0

Во-первых)
str не обязательная переменная - ее можно заменить допустим на strange1
Во-вторых)
Да-да я чуть-чуть наложал! Можнобыло так:

 if color not in colors:
    # Покороче
    print(strange1 + fc + colors['def'] + text)
else:
    if color == 'under':
        print(strange1 + fc + colors[color] + text)
    else:
        print(strange1 + fc + colors[color] + text)

Но все-равно - код хороший! Не надо выпендриваться!

Отредактировано python335 (Окт. 20, 2016 18:46:51)

Офлайн

#5 Окт. 20, 2016 18:55:14

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Модуль Color v2.0

Я хотел помочь, а тут вот такое в ответ получаю.
Посмеялся зато от души)



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#6 Окт. 20, 2016 19:18:58

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Модуль Color v2.0

Постольку поскольку поциент не желает воспринимать критику, дальнейшего смысла в этом с позволения сказать code-review нет.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version