Правильный стиль написания программного кода

Этот пост точнее было бы назвать как-нибудь вроде «Именование идентификаторов по общепринятым правилам» ибо так будет наиболее точно отражена суть статьи, но уже не важно… Правила программирования, в общем.

Это достаточно скользкая тема т.к. споров по поводу правильного стиля написания кода достаточно много и у каждого программиста своя точка зрения на этот счёт. Тем не менее есть некоторые «инстанции», которые дают советы по, их авторитетному мнению, правильного написания программного кода. В первую очередь это компании и корпорации занимающиеся непосредственно разработкой языков программирования, такие как Oracle (Java), Microsoft (C#, VB, etc) и другие. В их документации есть отдельные главы посвященные именно правильному стилю написания кода.

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

Естественно, что у каждого отдельного языка программирования есть свои особенности и поэтому правила написания красивого кода тут тоже весьма разнятся. Так же подобные правила могут диктовать и сами работодатели у которых есть корпоративная этика. Ниже я приведу пожалуй самые важные и популярные правила правильного написания программного кода, которые подходят в большинстве случаев ко всем Си подобным языкам программирования: Pascal, Delphi, C, C++, PHP, Java, C#, JavaScript и другие.

В большинстве своём эти правила базируются на официальных рекомендациях от Oracle для языка программирования Java. Как ни странно, по моим наблюдениям, все эти же рекомендации применяются и других языках программирования с Си подобным синтаксисом. Так вот, все материалы доступны на официальном сайте документации по языку Java, на английском разумеется. Там достаточно много информации по этой теме, я же, в этой статье, приведу пожалуй наиболее важные составляющие.

Переменные

Переменные должны назваться понятными именами существительными, состоять из 1-3 слов. Все слова пишутся слитно, каждое следующее слово начинается с большой буквы (верхний регистр). Первая буква в нижним регистре.

Иногда так же внутренние (с модификаторами доступа private и реже так же protected), т.е. сугубо служебные для данного класса, переменные (поля) классов начинаются с префикса нижнего подчёркивания. Т.е. внутренние поля начинаются с подчёркивания, так можно легко отличить их от доступных (public) полей.

В ООП переменные классов называются полями, реже так же свойствами. В более продвинутых ООП языках, таких как Java, поля и свойства это разные вещи. Поля это внутренние переменные, а свойства это интерфейсы доступа к этим полям извне: геттеры и сеттеры.

Константы

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

Примеры:

$value;
strint arrayOfStrings;
public int firstVariable;

Функции

Однозначно понятные словосочетания в которых присутствуют глаголы. Пишутся так же как и переменные, слитно с повышением регистра первой буквы каждого нового слова в названии.

Примеры:

function getObject(int variable, string secondVariable) {...}
public static void setValue(int value) {...}

Классы

Одно слово относящееся к имени существительному. Первая буква названия класса в верхнем регистре. Если название состоит из двух и более слов, то они так же как и переменные пишутся слитно с повышением регистра первой буквы каждого нового слова.

Примеры:

class FirstProgram {...}
public class SomeClass {...}
class Some {...};

Интерфейсы

Тоже самое, что и классы, только перед именем (в начале) дописывается большая буква I (от слова interface).

Примеры:

interface ISomeProgram {...}

Делегаты

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

Пространства имён

Одно существительное слово написанное полностью в нижнем регистре.

Всегда пишите только на английском языке (некоторые языки программирования поддерживают unicode в названиях сущностей) и не используйте транслитерацию при этом. Лучше лишний раз загляните в словарь или переводчик.

ООП в целом

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

PHP конкретно

Лучше пишите постоянные вкропления тегов php в код html чем выводить всю вёрстку через непосредственно php. Вообще всегда надо разделять сущности. Данные, программный код, логика, вёрстка, стили и прочее… Всё должно быть отдельно.

Это так сказать общие универсальные правила именований. Так же забывайте, что каждый шаг (stepment) должен писаться на новой строке. Не пренебрегайте форматированием кода (горизонтальным смещением по 4 символа), что бы каждые отдельные блоки были полностью видны. Насчёт переносов фигурных скобок ситуация спорная, каждый считает по своему. Я же думаю, что открывающие фигурные скобки лучше не переносить на отдельную строку, дабы их и так видно и так код сокращается. Закрывающие же надо переносить на новую отдельную строку. За счёт того, что в строке всего одна фигурная скобка становится визуально видно как один блок кода оделён от другого и нет необходимости делать ещё одни перенос для отделения.

Если ещё, что вспомню, то обязательно допишу, спасибо за внимание.