Подтвердить что ты не робот

Почему все-колпачки постоянные считали плохой стиль кодирования?

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

Итак, почему вы думаете, что это плохой стиль кодирования?

EDIT:

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

4b9b3361

Ответ 1

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

Постоянная в том смысле, что Джефф использовал семантически переменную, которая не может быть изменена. Он подчиняется всем принципам обзора и всему, и семантически идентичен неконстантной переменной с тем же значением.

Чтобы сделать это другим способом,

#define max_length 5

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

const int max_length = 5;

- просто объявление переменной. Поэтому существует преимущество при использовании

#define max_length 5

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

Ответ 2

Вы обнаружите, что многие заявления Джеффа сначала противоречивы, а точность является второстепенной задачей. Его блог не был бы популярен, если бы он не был иногда воспалительным. (Рассмотрим последнюю строку Death to the Space Infidels, "Тем не менее, только идиот будет использовать вкладки для форматирования своего кода." ) Это честно субъективны. Не принимайте все, что он говорит, как "Истина и Добра" - это не должно было быть. Если вы не согласны, пойдите в его задницу в комментариях и посмотрите, не пишет ли он.:)

Я думаю, что ALL_CAPS_CONSTANTS идеальны: они мгновенно узнаваемы и знакомы. Часть моих рекомендаций по стилю рабочего места (и у нас их не так много) заключается в том, чтобы написать все статические константы в шапках. Не потеть; просто используйте то, что использует остальная часть вашей команды. Решение StudlyCaps vs. camelCase vs SCREAMING_CAPS может стоить 90 секунд обсуждения.

Ответ 3

Кричать хорошо. В случае константы он сообщает читателю

НЕ ДОПУСКАЙТЕ, ЧТО ИЗМЕНИТЬ МЕНЯ ПОСЛЕ КОД

Но я понимаю, если программисты-программисты обижаются.

Ответ 4

Честно говоря, я не думаю, что это плохой стиль кодирования. Действительно, даже официальный стиль Java-кода делает константы всеми капиталами (http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html), как и другие условные обозначения языка.

В теории, это труднее читать - мы, люди, хотим использовать переменную высоту букв для увеличения скорости чтения (мы можем вывести много информации из грубой формы слова и первых/последних букв). Тем не менее, у меня нет проблем с короткими, все капитальные фразы. Это вряд ли "кричит" (компилятор точно не заботится о том, насколько вы грубы), и ясно показывает, что имена потенциально изменяемы, а те, которые не являются.

Ответ 5

Я не думаю, что это плохой стиль кодирования. Может, старомодный, но неплохой. Это делает константы отличными от других переменных.

Ответ 6

Единственная убедительная причина для меня - последовательность в стиле. Для не-NET-языков, таких как Java/С++, константы all-caps, безусловно, приемлемы.

Для С# стандартом является использование PascalCase, как указано здесь: Соглашение об именах С# для констант?

Ответ 7

ВСЕ ЦАПЫ НРАВИТСЯ СМОТРЕТЬ НА ЧЕЛОВЕК.

Ответ 8

ЭТО ТАКЖЕ СОЗДАЕТ КОДЕКС, ЧТОБЫ ПРОЧИТАТЬ

Ответ 9

У Джеффа есть некоторые дополнительные вещи, чтобы сказать об этом в комментариях:

Однако с другой стороны и причина, по которой я все еще использую все кепки и   подчеркивание

Меньше кода? Это стоящее дело заслуживающих серьезного обсуждения.

Но называете ли вы что-то "foo", "Foo", "_foo" или "FOO"? Мех.

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

Тем не менее, я думаю, что ВСЕ ДЕЙСТВИЯ ДЕЙСТВИТЕЛЬНО Трудно читать!

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

Ответ 10

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

Есть исключения. Такие языки, как SQL, обычно имеют верхний регистр (хотя и без учета регистра).

Кроме того, существуют и другие виды использования, например, чтобы различать "константы" и регулярные переменные, которые вы увидите на многих языках, таких как PHP, Python и т.д., хотя Jeff по какой-то причине не нравится, и, по-видимому, это противоречит правилам стиля кода С#.

В общем, я не думаю, что это где-то не так, но я думаю, что нужно всегда стараться следовать общим рекомендациям. Когда в Риме делайте, как римляне, при кодировании Python следуйте PEP 8:)

Ответ 11

ВОСПРОИЗВЕДЕНИЕ ВОПРОСА, ПОЧЕМУ ИСПОЛЬЗОВАТЬ ВСЕ КАПС?

Ответ 12

Некоторые люди считают ВСЕ КАПСЫ "старой школой". Рассмотрим разницу между:

const string ErrorMessage = "Some error message.";

и

const string ERROR_MESSAGE = "Some error message.";

Оба полностью пригодны для использования, но версия ALL CAPS менее используется более новыми разработчиками, такими как те, которые начинаются с .NET.

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

Ответ 13

Я не думаю, что это неправильно. В основном, это личный выбор. Для вашего личного кодирования, сделайте то, что вы хотите. Для вас профессиональное кодирование, следуйте политике компании.

Ответ 14

Точно так же, как писать все, выделенное жирным шрифтом, не является хорошей идеей

Ответ 15

Я перепутал свой капот с ключом ctrl (woo emacs!). Поэтому я думаю, что его плохой стиль, когда мне приходится вводить имена с 30 символами, удерживая shift

Ответ 16

@ck,

ПОТОМУ ЧТО ЭТО КОНВЕНЦИЯ.

Ответ 17

Я использую ALL_CAPS для макросов и символов препроцессора. Поэтому мои константы pre-C99 C являются ALL_CAPS, но не на любом другом языке, о котором я знаю.

Ответ 18

Константы и КОНСТАНТЫ могут отличаться. Используйте all-caps только при работе с препроцессором, что, например, сказано в С++, рекомендуется избегать этого и использовать константную переменную или constexpr, которая будет называться так же, как и любые другие переменные (возможно, с некоторым префиксом или что-то, чтобы было ясно, что это константа, но...).