Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Стиль – це результат гіркого досвіду

with 2 comments

Imports should usually be on separate lines. (PEP8)

Колись давно, десь три роки тому, всередині фрейморку Zope якийсь добрий чоловік зробив отаку зміну.

Якщо конкретно, то мені в ній найбільше сподобалось оце:

import DocumentTemplate, Common, Persistence, MethodObject, Globals, os, sys
+import os
+import sys
+import DocumentTemplate
+import MethodObject
+import Persistence
+from App import Common

view raw
some_zope.diff
hosted with ❤ by GitHub

І зараз я з прикладом поясню чому менше рядків краще лише в тому випадку коли рядки при цьому не стають довшими. Нехай ми працюємо з версією Zope зробленою ще до цього коміта і маємо трейс:

File "/opt/zenoss/lib/python/HelpSys/HelpSys.py", line 22, in <module>
from App.special_dtml import DTMLFile
ImportError: cannot import name DTMLFile

view raw
gistfile1.pytb
hosted with ❤ by GitHub

Переконуємось що App.special_dhtml містить клас DTMLFile. Значить причина помилки при імпорті в тому що код модуля не встигає прогнатись аж до того місця де йому кажуть створити цей клас. Методом дихотомії визначаємо що проблема в рядку 14:

import DocumentTemplate, Common, Persistence, MethodObject, Globals, os, sys

Десь тут виникає той самий ImportError, але рядок надто довгий аби точно знати де. Доведеться переписати аби рядків було більше. Далі import pdb; pdb.set_trace(); n n n n n ..., бачимо що винен модуль Globals, який імпортує App, а щоб імпортувати App, треба імпортувати special_dhtml, імпортом якого ми зараз займаємось.

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

The show must go on
I’ll face it with a grin
I’m never giving in
On – with the show
I’ll top the bill, I’ll overkill

Ну ви зрозуміли 😉

Written by bunyk

21 Березня, 2014 at 20:15

Опубліковано в Кодерство

Tagged with

Відповідей: 2

Subscribe to comments with RSS.

  1. виходить, потрібні валідатори стилю?

    danbst

    22 Березня, 2014 at 22:02


Напишіть відгук

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out /  Змінити )

Google photo

Ви коментуєте, використовуючи свій обліковий запис Google. Log Out /  Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out /  Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out /  Змінити )

З’єднання з %s

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.

%d блогерам подобається це: