Найти - Пользователи
Полная версия: Вопросы стиля при кодировании
Начало » Python для экспертов » Вопросы стиля при кодировании
1 2
regall
Вот занятная ситуация.
Кто делал приложения с wxPython знает, что там не все соответствует PEP8 (как, наверное, и в большинстве биндингов).
Пример. Есть два варианта кода.

Вариант 1:

def create_taskbar_icon(self):
self.tb_panel = wx.TaskBarIcon()
self.tb_icon = wx.Icon('icon.ico', wx.BITMAP_TYPE_ICO)
self.tb_panel.SetIcon(self.tb_icon, u'Кликните здесь!')
self.tb_panel.Bind(wx.EVT_TASKBAR_LEFT_DOWN, self.OnTaskBarClick)
Вариант 2:

def CreateTaskbarIcon(self):
self.TbPanel = wx.TaskBarIcon()
self.TbIcon = wx.Icon('icon.ico', wx.BITMAP_TYPE_ICO)
self.TbPanel.SetIcon(self.TbIcon, u'Кликните здесь!')
self.TbPanel.Bind(wx.EVT_TASKBAR_LEFT_DOWN, self.OnTaskBarClick)
В первом варианте производится попытка писать в соответствии с PEP8, но происходит смешение стилей. Например, метод SetIcon() просится быть set_icon(), а Bind() - bind(). Во втором все как бы одинаково, но не соответствует PEP8.

Как быть? Изолировать модули с созданием GUI и писать как в варианте 2, или все-таки делать как в варианте 1?
Жду ваших мыслей по этому поводу.
Андрей Светлов
Пишу как привык. Если у либы другой стиль кодирования - ее проблемы. Что, при использовании Qt все классы с Q начинать?
regall
Андрей Светлов
Что, при использовании Qt все классы с Q начинать?
Ну, в этом случае, конечно нет. Я больше печусь о читабельности кода, поэтому спрашиваю.
Isem
Когда происходит смешение стилей, это даже хорошо. Во-первых, всегда ясно происхождение той или иной функции. Во-вторых, не происходит “закостенение” мозга. В-третьих, начинаешь думать о проблеме по существу, а не о том, где поставить скобку - на этой строке или на следующей.
Zubchick
делаю первым вариантом
bw
PEP8 меня не сильно беспокоит. Так как соответствие вкусам (а также настройкам текстового редактора и расположению клавиш на ноуте) Гвидо для себя не считаю необходимостью. Ибо…

> Я больше печусь о читабельности кода

p.s. В данном примере я предпочёл бы видеть код как в первом варианте.
def create_taskbar_icon(self):
self.tb_icon = wx.Icon('icon.ico', wx.BITMAP_TYPE_ICO)
self.tb_panel = wx.TaskBarIcon()
self.tb_panel.SetIcon(self.tb_icon, u'Кликните здесь!')
self.tb_panel.Bind(wx.EVT_TASKBAR_LEFT_DOWN, self.on_taskbar_click)
p.p.s. С заглавной начинаю классы и фабрики. Все атрибуты/методы/переменные/свойства со строчной (бывает вставляю прописные в середине, но последнее время такого за собой не наблюдаю).

..bw
regall
bw
PEP8 меня не сильно беспокоит. Так как соответствие вкусам (а также настройкам текстового редактора и расположению клавиш на ноуте) Гвидо для себя не считаю необходимостью. Ибо…
Если принять это во внимание, то мы из питона можем получить php.

Если есть pep8, и это принятая рекомендация, то почему ей не следовать?
IMHO: Мне очень приятно читать код, который написан по правилам pep8, и очень бесит когда код не соответствует.
Isem
regall
IMHO: Мне очень приятно читать код, который написан по правилам pep8, и очень бесит когда код не соответствует
Это уже проблема не того, кто пишет код, а того, кто его читает :)
regall
Isem
Это уже проблема не того, кто пишет код, а того, кто его читает
Не согласен. Автор кода должен сделать так, чтобы его потем смогли прочесть. В том числе сам автор через длительное время, если понадобится.
bw
> Автор кода должен сделать так, чтобы его потем смогли прочесть
Именно так я и поступаю, а не слепо следую рекомендациям PEP8. Например, там где я считаю, что между классами должно быть три пустые строки, а не две, я буду делать три, если я считаю, что для читаемости между именем класса и описанием первого его атрибута следует отступить на одну строку, я так и сделаю (но док. напишу слитно), если мне покажется, что несколько выражений следующих друг за другом нужно выравнять пробелами, скажем, по знаку равенства (как я поступил в примере выше), а другие выражения разделить пустой строкой, я так и сделаю вне зависимости от того что пишут в PEP8 или ещё где бы то ни было.
Я очень много чужого кода читаю (любой, собственно, пакет, с которым работаю я изучаю, пусть не полностью) и считаю свою оценку читаемости кода адекватной.

p.s. Оставляю за собой право, через много-много лет изменить своим привычкам :-).

..bw
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB