четверг, 24 октября 2013 г.

Стиль кодинга. Что меня может вымораживать =)

Список того, что меня вымораживает. Это не пост для холиваров, это моё личное шизофреническое =) Периодически будет пополняться.

  1. Самое наверное затасканное. Фигурная скобка на той же строке, что и название функции/оператора. Это сильное имхо, но скобка должна быть на следующей строке. Возражения принимаются при личной встрече. Я объясню свой взгляд на эстетическое построение кода.
  2. При создании массива первая буква - большая. Для меня надо array(), а не Array(). В этом смысле код битрикса меня иногда просто пришибает на месте.
  3. Аналогично в битриксе меня вымораживает повсеместное использование альтернативного синтаксиса типа if endif. Наследие предков...
  4. Неотформатированный красиво код. Он же нечитабелен потом! Да и форматировать надо ОТСТУПАМИ, а не пробелами! У нас файл конфига в одном из проектов отформатирован пробелами. Убила бы, чесслово...
  5. Названия классов с маленькой буквы. Простите, но это уже просто неуважение. Всё равно что имя человека написать с маленькой буквы.
  6. Использование echo  в короткой записи. <? echo $ar; ?>. Если используете короткую запись - так используйте короткую! <?=$ar?>
  7. Использование фигурных скобок в однострочных условиях/циклах. В однострочных они неообязательны. Например
    foreach($ar as $key=>$value)
    {
      echo $value.' ';
    }
    Ну и нафига здесь фигурные скобки? Они только засоряют внешне код. Мне возражают, что мол программист если надо добавить ещё строку к циклу может просто подписать её под строкой, не заметив, что цикл однострочный, ибо фигурных скобок нет. Если код чётко отформатирован, то такого никогда не случится, поверьте мне.
  8. Неоткомментированный код. Простите, а вы сами читали, что у вас написано? =) А если через полгодика? А если ваш коллега успел добавить что-нибудь своё?
  9. Стопиццот вложений. Иф внутри ифа внутри цикла внутри ифа внутри ифа. Ну вы поняли. Вообще больше 4-5 уже считается плохим тоном и говнокодом. Да и просто - такой код относительно нечитабелен. Используйте return, continue и break =)
  10. Использование некорректных префиксов. Если уж написали $arResult, то будьте добры использовать эту переменую как массив, а не как булев переключатель. (В пункте номер 6 ничего не заметили?)

5 комментариев:

  1. А вот по пункту 7 у Битрикса противоположная точка зрения:

    Фигурные скобки должны использоваться всегда

    http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=5759#if_else
    :)

    ОтветитьУдалить
    Ответы
    1. постинг начинается с утверждения, что это личная шизофрения =)
      а началось всё вот с чего.

      пару недель назад один из программистов в отделе разработки захотел составить документ, регламентирующий стиль кодинга в компании. некоторые пункты отсюда - про него.
      начал он это после того, как наш отдел обвинил его в бессмысленном исправлении стиля наших файлов своим автоформатом. бессмысленном - потому что не было никаких изменений кроме стилевых (а конфликты в скв пришлось выравнивать ручками)
      это привело к понятным последствиям - лёгкому холивару на несколько страниц на корп.портале компании.

      сошлись мы на том, что мы пишем в адекватном для каждого стиле. общие файлы оформляем в стиле того, кто первым этот файл начал, не изменяя чужой стиль без нужды.

      если по теме коммента - у битрикса в пункте 1.2.2 пример с else. я же говорю про однострочные, не требующие присутствия else. либо требующие, но опять же однострочного.
      if
      выражение;
      else
      выражение;
      если какое-то из выражений превращается в двухстрочное, то вся конструкция обязательно обрастает фигурными скобками.

      Удалить
  2. Жосткий парень ))
    Это он предложил PHP-классы с маленькой писать?
    Может С++ недавно изучал? ;)

    По мне, так все равно как код написан, лишь бы комментариев побольше.
    Иногда алгоритм такой, что как не форматируй - через полгода даже свой код с трудом бы разобрал.
    В таких случаях в начале (внутри тела) больших функций/методов пишу здоровый комментарий, объясняющий по шагам, что да как должно работать, а уже затем реализация с мелкими комментариями по ходу.
    Ну и конечно, перед объявлением функции/метода - описание в формате *doc, если таковой для этого ЯП есть.

    А вообще странно, что регламента не было. Штука довольно удобна, особенно если все на одной IDE сидят. Кажется, в eclipse он может не только файлом устанавливаться, но и из репозитория подключаться.
    Ну и для каждого языка - свой регламент. Тот же египетский стиль для JS - практически стандарт. В исходниках jQquery можно глянуть.

    А что до Битрикса, так в текущей версии есть такой класс, как "learning" - там тоже есть свои правилоневыполнятели :)))

    ОтветитьУдалить
    Ответы
    1. комментарии кстати пишу также. сверху весь алгоритм в общих последовательностях, особенности использования. а далее комменты по ходу реализации.
      ИДЕ у нас не регламентирован. в основном пишут на саблайме, нотепад++, эклипсе.

      Удалить
    2. До этого момента я не знал, что в Битрикс классы расположенные в /install/index.php - специальные, и их имя должно совпадать с Id модуля.
      ( http://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=2824 )
      К ним относится и упомянутый мною класс learning.
      Так что мой пример не засчитывается.

      Удалить