Список того, что меня вымораживает. Это не пост для холиваров, это моё личное шизофреническое =) Периодически будет пополняться.
- Самое наверное затасканное. Фигурная скобка на той же строке, что и название функции/оператора. Это сильное имхо, но скобка должна быть на следующей строке. Возражения принимаются при личной встрече. Я объясню свой взгляд на эстетическое построение кода.
- При создании массива первая буква - большая. Для меня надо array(), а не Array(). В этом смысле код битрикса меня иногда просто пришибает на месте.
- Аналогично в битриксе меня вымораживает повсеместное использование альтернативного синтаксиса типа if endif. Наследие предков...
- Неотформатированный красиво код. Он же нечитабелен потом! Да и форматировать надо ОТСТУПАМИ, а не пробелами! У нас файл конфига в одном из проектов отформатирован пробелами. Убила бы, чесслово...
- Названия классов с маленькой буквы. Простите, но это уже просто неуважение. Всё равно что имя человека написать с маленькой буквы.
- Использование echo в короткой записи. <? echo $ar; ?>. Если используете короткую запись - так используйте короткую! <?=$ar?>
- Использование фигурных скобок в однострочных условиях/циклах. В однострочных они неообязательны. Например
foreach($ar as $key=>$value) { echo $value.' '; }
Ну и нафига здесь фигурные скобки? Они только засоряют внешне код. Мне возражают, что мол программист если надо добавить ещё строку к циклу может просто подписать её под строкой, не заметив, что цикл однострочный, ибо фигурных скобок нет. Если код чётко отформатирован, то такого никогда не случится, поверьте мне. - Неоткомментированный код. Простите, а вы сами читали, что у вас написано? =) А если через полгодика? А если ваш коллега успел добавить что-нибудь своё?
- Стопиццот вложений. Иф внутри ифа внутри цикла внутри ифа внутри ифа. Ну вы поняли. Вообще больше 4-5 уже считается плохим тоном и говнокодом. Да и просто - такой код относительно нечитабелен. Используйте return, continue и break =)
- Использование некорректных префиксов. Если уж написали $arResult, то будьте добры использовать эту переменую как массив, а не как булев переключатель. (В пункте номер 6 ничего не заметили?)
А вот по пункту 7 у Битрикса противоположная точка зрения:
ОтветитьУдалитьФигурные скобки должны использоваться всегда
http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=5759#if_else
:)
постинг начинается с утверждения, что это личная шизофрения =)
Удалитьа началось всё вот с чего.
пару недель назад один из программистов в отделе разработки захотел составить документ, регламентирующий стиль кодинга в компании. некоторые пункты отсюда - про него.
начал он это после того, как наш отдел обвинил его в бессмысленном исправлении стиля наших файлов своим автоформатом. бессмысленном - потому что не было никаких изменений кроме стилевых (а конфликты в скв пришлось выравнивать ручками)
это привело к понятным последствиям - лёгкому холивару на несколько страниц на корп.портале компании.
сошлись мы на том, что мы пишем в адекватном для каждого стиле. общие файлы оформляем в стиле того, кто первым этот файл начал, не изменяя чужой стиль без нужды.
если по теме коммента - у битрикса в пункте 1.2.2 пример с else. я же говорю про однострочные, не требующие присутствия else. либо требующие, но опять же однострочного.
if
выражение;
else
выражение;
если какое-то из выражений превращается в двухстрочное, то вся конструкция обязательно обрастает фигурными скобками.
Жосткий парень ))
ОтветитьУдалитьЭто он предложил PHP-классы с маленькой писать?
Может С++ недавно изучал? ;)
По мне, так все равно как код написан, лишь бы комментариев побольше.
Иногда алгоритм такой, что как не форматируй - через полгода даже свой код с трудом бы разобрал.
В таких случаях в начале (внутри тела) больших функций/методов пишу здоровый комментарий, объясняющий по шагам, что да как должно работать, а уже затем реализация с мелкими комментариями по ходу.
Ну и конечно, перед объявлением функции/метода - описание в формате *doc, если таковой для этого ЯП есть.
А вообще странно, что регламента не было. Штука довольно удобна, особенно если все на одной IDE сидят. Кажется, в eclipse он может не только файлом устанавливаться, но и из репозитория подключаться.
Ну и для каждого языка - свой регламент. Тот же египетский стиль для JS - практически стандарт. В исходниках jQquery можно глянуть.
А что до Битрикса, так в текущей версии есть такой класс, как "learning" - там тоже есть свои правилоневыполнятели :)))
комментарии кстати пишу также. сверху весь алгоритм в общих последовательностях, особенности использования. а далее комменты по ходу реализации.
УдалитьИДЕ у нас не регламентирован. в основном пишут на саблайме, нотепад++, эклипсе.
До этого момента я не знал, что в Битрикс классы расположенные в /install/index.php - специальные, и их имя должно совпадать с Id модуля.
Удалить( http://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=2824 )
К ним относится и упомянутый мною класс learning.
Так что мой пример не засчитывается.