Конференция "Прочее" » Стиль написания кода
 
  • Inovet © (14.02.17 19:08) [20]
    > [13] Rouse_ ©   (14.02.17 16:43)
    > заканчивающийся строфой

    Так там даже в стихотворной форме было?:)

    Юра, не воспроизведёшь ли?
  • asail © (14.02.17 19:42) [21]

    > Игорь Шевченко ©   (14.02.17 17:02) [18]
    > Все давно написано:
    > http://edn.embarcadero.com/article/10280

    Значит, замечание топикстартеру сделали правильное. Ибо сказано: "Never place a begin statement on the same line with any other code."

    А вообще, есть сомнения в стиле написания кода - смотри генофонд и делай по образу и подобию...
  • Кто б сомневался © (14.02.17 20:29) [22]
    Begin
    end

    Легче читать, т.к. текст виден в виде блока + он должен быть со смещением - кстати в последних версиях IDE  - в редакторе рисуются прямые линии от начала begin вниз до end - что также упрощает.

    А я еще приставку v использую, когда обозначаю var. И g когда глобальные переменные.
    Код легче читать.

    procedure MyProc(aMyVar: integer);
    var
     vMyVar: integer;

    А еще меня очень раздражает когда pas модули именуют начинают с буквы u . Зачем непонятно, есть же расширение pas и иконка.
    Их нереально потом искать по первой букве в Total cmd
  • Pavia © (14.02.17 20:37) [23]
    Есть у меня USegmen.pas в нем есть тип TSegment и функция Segment(P0,P1:TPoint)
    Вот что-бы были разные имена и использую букву u.
    А зачем в тотале искать по алфовиту? Тем более когда есть яндекс.десктоп
  • Кто б сомневался © (14.02.17 20:54) [24]

    > А зачем в тотале искать по алфовиту?


    Ну как зачем, открываю папку, там куча файлов. Нажимаю первую (или первые буквы) и тотал сразу перепрыгивает на этот файл. Удобно жеж.
  • Кто б сомневался © (14.02.17 20:57) [25]
    Это и в стандартном Explorer тоже есть.

    А .. яндекс.десктоп - зачем, если есть тотал? Я сильно сомневаюсь что он умеет хотя бы 40% того что умеет Total Commander.
  • Юрий Зотов © (14.02.17 21:00) [26]
    > Inovet ©   (14.02.17 19:08) [20]
    > По заявкам...


    Реальный случай. Был у нас в команде один программист. Надо сказать, очень грамотный. Без шуток.

    И вот спорили мы с ним, где надо писать begin - на той же строчке или на следующей. Не ругались конечно, а так, спорили себе потихоньку.

    Писал он как-то DLL и совсем забыл, что ShareMem надо ставить первым. Ну бывает, переклинило человека - тем более, что на нем еще куча других обязанностей висела.

    Естественно, полезли у него 216 и 217. Час бьется, два бьется, уже просто ошалел. И говорит мне: "Слушай, глянь незамыленным взглядом - в чем тут дело".

    Я подошел и сразу увидел, что ShareMem - не первый. Но ему ничего не сказал, а сказал - иди покури, а я тут пока поковыряюь.

    Конечно, через 3 минуты все заработало. Приходит Серега, офигевает и спрашивает - в чем же дело было?

    И тут мой час настал! Серега - говорю - ну сколько можно твердить, что begin надо писать на отдельной строке!

    Команда уписалась...
  • Inovet © (15.02.17 00:32) [27]
    > [26] Юрий Зотов ©   (14.02.17 21:00)


    Ийс! Хоть и не в стихотворноей фрме.:)
  • Германн © (15.02.17 02:44) [28]

    > Rouse_ ©   (14.02.17 14:50) [5]
    >
    > Второй вариант, конечно, более классический

    С этим поспорю.
    Ещё во времена ТурбоПаскаля было понятно что второй вариант (если, конечно, использовать классические отступы) неоправдано увеличивает "ширину кода". И существенная часть кода от TurboPowerProfessional была написана именно по первому варианту.
    И мне он более близок.
    Я лично считаю, что нужно выделять конструкции if/for etc, а не просто блоки begin..end.
  • Rouse_ © (15.02.17 09:39) [29]
    Серег, у нас в команде каждый пишет в своем стиле - очень удобно, всегда гляда на стилистику можно с ходу отмазаться при возникновении ошибки - этот гавнокод писал не я :)
  • Германн © (16.02.17 02:17) [30]

    > Rouse_ ©   (15.02.17 09:39) [29]

    :)
    Но вы и не пишете и не отлаживаете программы на устройствах с малыми экранами. Ноутбуках, например. Или не дай бог на нетбуках. :)
    А мне приходится. :(
  • Германн © (16.02.17 02:29) [31]
    Ах, да. Очепятался в Германн ©   (15.02.17 02:44) [28]
    Второй вариант конечно же неоправданно увеличивает "высоту кода". Что на нетбуке просто ужасно смотрится.
  • Inovet © (16.02.17 05:50) [32]
    > [30] Германн ©   (16.02.17 02:17)
    > на устройствах с малыми экранами

    Ещё можно делать максимально длинную строку, чтобы влезала на широкий матричный принтер самым сжатым встроенным шрифтом (234 символа на строку, вроде бы), распечатывать, а потом ползать с карандашом по распечатке. Увы, такой стиль не из анекдота. И в нём обязательно должно быть понатыкано
    if a > 2 then
     b = true
    else
     b = false
    end

    if b = true then
     c = false
    end

    потому что так понятнее.
  • Inovet © (16.02.17 05:54) [33]
    > [32] Inovet ©   (16.02.17 05:50)

    Пардон

    if a > 2 then b = true else b = false end
    if b = true then c = false end
  • Sha © (16.02.17 09:35) [34]
    Давным-давно пришлось работать с 12-строчными дисплеями по 80 символов в строке.
    Причем из этих 12 две служебные: одна для ввода команды и одна для отображения статуса.
    С тех пор держу себя в рамках, оставило неизгладимый след )
  • sniknik © (16.02.17 10:35) [35]
    > 12-строчными дисплеями по 80 символов в строке.
    тебе еще повезло, у нас было оборудование с мониторами "четвертинками" в 12 на 40 символов... только под специализированную программу, а настраивать ее носили подключать обычный.
    пришлось делать удаленный просмотр на IPX/SPX (программа была под DOC и сеть только такая), просто для того чтобы узнать что там случилось (спец прога могла "вылететь" с ошибкой, а сообщение вовсе не обязательно приходилось на верхнюю видимую четверть, скорее на нижнюю невидимую).

    сейчас, в дельфе выставляю поле справа в 128 символов, за которое стараюсь не вылезать кодом, комментарии могут... вообще с распространением широкоформатных мониторов считаю лучшим стиль "в ширину" т.е. так
    if () then begin
    end;


    хотя, если условий много, или они широкие, т.е. когда их приходится переносить на две и больше строк тогда пишу так
    if () and
      () then
    begin
    end;


    в общем пишу так как мне кажется в конкретном случае более наглядно. не считаю что это вообще какой то отдельный стиль.
  • Кто б сомневался © (16.02.17 16:53) [36]
    А подскажите, можно ли выделять отдельном цветом переменные Var, переменные аргументы, глобальные переменные, поля?
    Что не маркировать их при помощи приставок v, a, g, f?

    Но кстати это очень удобно, причем когда ставишь приставку именно с маленькой буквы, тогда она не сливается с первой буквой имени:

    fList, aList, vList, gList. Попробуйте, вам понравится.

    Но T и I и E привычней с большой - TList, IList, EList
  • Eraser © (16.02.17 17:16) [37]

    > Кто б сомневался ©   (16.02.17 16:53) [36]
    > А подскажите, можно ли выделять отдельном цветом переменные
    > Var, переменные аргументы, глобальные переменные, поля?
    > Что не маркировать их при помощи приставок v, a, g, f?

    глобальных переменных, в принципе, быть не должно, только в виде редких исключений, разве что.
    поля итак принято именовать, начиная с заглавной F.
    аргументы, зачастую, именуют с заглавной A, хотя в VCL вроде не практикуется, но в целом, удобно.
    венгерская нотация - вещь удобная, но использовать только исключительно ее я бы не стал. более того, зачастую последнее время, ее использование не приветствуется.
  • NoUser © (16.02.17 18:17) [38]
    Вначале лиловые скобочки выравнивались по begin, но потом кто-то кому-то настучал, и теперь они выравниваются по тому, кто левее.

    Думаю можно это считать официальным разрешением на begin в конце строчки.
    ( моно begin в строке даже не метится синеньким кружочком )
  • Тимохов Дима © (16.02.17 22:19) [39]
    Пишу практически, как сказано в гайде от производителя, только
    а. Отступ 3 (привык).
    б. Префиксами пользуюсь (тоже привык) для переменных:
      f - для private членов.
      a - для параметров.
      k - для лок. переменных.
      _ - для классовых методов.
      fu - для переменных под implementation.

    А! И всегда пишу const перед параметром, чтобы не было соблазна использовать параметры, как локальную переменную.
    Иногда это нужно все же (в целях быстродействия), но у меня таких пара мест всего.
 
Конференция "Прочее" » Стиль написания кода
Есть новые Нет новых   [118645   +51][b:0][p:0.001]