1. denger

    29.12.2009

    0 ↑
    0 ↓

    Самый главный вопрос про длину строки - по стайлгайду она не должна быть больше 79 символов (а рекомендуется - 72). На практике приходится нарушать это требование, особенно когда используются строки для вывода пользователю и кажется, что более длинная строка будет выглядеть красивее, нежели две короткие и "по-стандарту".

    Особенно это характерно для моделей в джанго - не хватает совсем немного места, причем в каждой строчке. Если переносить - получается ужасная гребенка (если вторую строку отодвигать на 4 пробела) и месиво, без переносов - более удобное расположение "почти в столбик".

  2. Иван Сагалаев

    29.12.2009

    1 ↑
    0 ↓

    PEP8:

    But most importantly: know when to be inconsistent — sometimes the style guide just doesn't apply. When in doubt, use your best judgment. Look at other examples and decide what looks best.

    Дзен Питона:

    • Readability counts.

    То есть, если следуя букве правил, получается криво — отступайте от правил.

  3. Я, например, для повышения читаемости иногда пренебрегаю правилом не выравнивать присвоения (и др.) пробелами:

    class BuildList(models.Model):
        name       = models.CharField(max_length=100)
        status     = models.CharField(max_length=250)
        blocked    = models.BooleanField(default=False)
        recursive  = models.BooleanField(default=False)
        start_time = models.DateTimeField(auto_now_add=True)
        last_time  = models.DateTimeField(auto_now=True)
        project    = models.ForeignKey(Project)
    
    urlpatterns = patterns('',
        (r'^login/$',    'django.contrib.auth.views.login'),
        (r'^logout/$',   'django.contrib.auth.views.logout'),
        (r'^products/$', 'django.views.generic.simple.redirect_to', {'url': '/'}),
    )
    

    А вы?

  4. Кактус

    06.01.2010

    0 ↑
    5 ↓
    А я не пользуюсь 4-мя пробелами вместо нормальной табуляции.
  5. Ну, это дело вкуса :) PEP же их ненавязывает
  6. Кактус

    06.01.2010

    0 ↑
    1 ↓
    Почти навязывают, настоятельно рекомендуют.
  7. astur.net.ru

    06.01.2010

    0 ↑
    1 ↓

    А я не пользуюсь 4-мя пробелами вместо нормальной табуляции.

    Когда пилишь чужой исходник, хочется стандарта, а несовпадуха пробелов и табов всё портит. Можно, конечно, попробовать всех перевести на табы и только на табы, но практика использования текстовых редакторов показывает, что такого не будет никогда.

  8. Прогнал последний проект через pylint:
    Your code has been rated at 3.23/10
    В основном line is too long и нет пробела после запятой
    ничего страшного в этом не вижу
    можно прикрутить pylint к редактору и он будет подчеркивать что не так, но что-то не хочется. а вот pyflakes прикрученный к редактору(через pyflakes.vim) очень спасает от глупых ошибок, опечаток
  9. astur.net.ru

    08.01.2010

    3 ↑
    0 ↓

    В основном line is too long и нет пробела после запятой

    ничего страшного в этом не вижу

    Ага, страшное увидят те, кто будут читать ваш код :)

  10. о бесчеловечности pylint'a можно слагать легенды, лично я был сражен когда увидел warnings а ля "too many public methods" :)
  11. astur.net.ru

    09.01.2010

    2 ↑
    0 ↓

    был сражен когда увидел warnings а ля "too many public methods"

    У вас никогда после выполнения dir с модулем не возникало подозрения, что что-то не так? Ну, например, сложно за минуту понять, от кого выполнять __doc__, или ещё что-то подобное?.. Куча паблик-методов - это же в реальной жизни приговор документированию.

  12. Я уже точно не помню контекста, в котором возникло это предупреждение, по моему в моем классе методов было немного, а вот в суперклассе видимо был перебор. Нелепость ошибки в том, что суперкласс был из сторонней библиотеки.
  13. astur.net.ru

    09.01.2010

    2 ↑
    0 ↓

    суперкласс был из сторонней библиотеки.

    ...автор которой, видимо, тоже был возмущён бесчеловечностью pylint'a :)

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.