Стандарты межъязыкового кодирования?


Я ищу совет относительно соглашений о кодировании. Основными языками, которые я использую, в порядке частотности являются C#, JavaScript и ActionScript. Все они являются языками на основе ECMA, поэтому по большей части синтаксис взаимозаменяем. Что я хотел бы сделать, так это стандартизировать способ написания кода.

Я поискал документы по стандартам кодирования и нашел некоторые из них, написанные различными авторами, включая Microsoft, Adobe, Doug Crockford и авторов различных книг, которыми я владею. Большая часть личности стандарты идентичны. Например, не используйте заглавные буквы для различения идентификаторов объектов. Ладно, звучит неплохо.

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

Советы C# обычно отличаются друг от друга больше, чем ActionScript и JavaScript друг от друга, что делает их более трудными для меня так как это большее количество языков против большего количества написанного кода. Существует также проблема автоматического форматирования в IDE (например, размещение открывающих скобок в функциях в JavaScript vs C#).

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

5 3

5 ответов:

Идиомы, которые имеют смысл в C#, не обязательно будут иметь смысл в Javascript (и наоборот), несмотря на то, что оба используют заостренные скобки и точки с запятой.

Мы используем разные стили кодирования-по большей части стандартный стиль Microsoft для C# и по большей части стандартный стиль jQuery для Javascript. Это может быть немного странно выглядеть (непересекающийся случай Pascal против camel означает, что у вас есть некоторые объекты C#, которые имеют "неправильный" корпус, потому что они в значительной степени просто там, как контейнеры JSON), но я бы не стал пытаться втиснуть то, что является двумя дискретными языками в единую грамматику.

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

Мы пытались сделать это у одного из моих работодателей с Delphi и C#, и никто не был счастлив.

Мы используем этот документ. Я понимаю, что многие люди используют его. Это своего рода отраслевой стандарт: http://www.idesign.net/idesign/download/IDesign%20CSharp%20Coding%20Standard.zip .

Работает для многих языков, но он написан специально для C#.

Мне повезло работать в среде, где я не должен соответствовать чьему-то стандарту

Лично я не следую стандарту Microsoft для C#: вместо этого все мои имена методов и имена свойств используют camelCase (хотя мои типы все еще используют верхний регистр). Кроме того, я украшаю свои данные-члены (чтобы их нельзя было спутать с локальными переменными, свойствами и/или параметрами).

Я не вижу, почему необходимо следовать соглашениям Microsoft об именовании; IMO это даже иногда хорошо, что не: когда я подкласс типов Microsoft, случае (например, 'добавить') различие моих методов от методов Microsoft (например, "добавить") в базовом классе.

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

Это правда, однако, что другие разработчики могут/не нравится; например, кто-то прокомментировал некоторый пример кода C#, который я опубликовано в некотором ответе здесь на SO, чтобы критиковать его не за его содержание, а за его соглашение об именовании.

На самом деле это вопрос предпочтения, потому что именно это и есть стандарты кодирования: стандарты. Здесь нет очевидного правильного или неправильного, соблюдение стандартов сообщества каждого языка имеет много общего, пока вы не работаете на 5 различных языках, которые часто имеют тонкие различия. Вы не сможете идти в ногу и начать следовать ни одному стандарту.

То, что я делал раньше, - это использование одного и того же стандарта для языков в одной и той же области (PHP, Java, Ruby) и затем некоторые конкретные, если было абсолютно непрактично использовать тот же набор стандартов, и код выглядит достаточно по-другому, чтобы ваш мозг также мог переключиться (например, для сценариев BASH).

Но на самом деле это то, с чем вы (и остальная ваша команда) согласны. Вы не получаете продуктивности от определенного набора стандартов кодирования, вы получаете продуктивность, имея те же стандарты, что и люди, с которыми вы работаете. Если вы хотите, чтобы пойти полный венгерский верблюд дело с подчеркиванием на top: больше власти для вас, просто убедитесь, что вся команда делает это ;)