Почему все заглавные буквы считаются плохим стилем программирования? [закрыто]

Мне нравится ответ user64141, но обнаружил, что он может быть более обобщенным. Вот мое взятие:

public abstract class ExpectedThrowableAsserter implements Runnable {

    private final Class<? extends Throwable> throwableClass;
    private final String expectedExceptionMessage;

    protected ExpectedThrowableAsserter(Class<? extends Throwable> throwableClass, String expectedExceptionMessage) {
        this.throwableClass = throwableClass;
        this.expectedExceptionMessage = expectedExceptionMessage;
    }

    public final void run() {
        try {
            expectException();
        } catch (Throwable e) {
            assertTrue(String.format("Caught unexpected %s", e.getClass().getSimpleName()), throwableClass.isInstance(e));
            assertEquals(String.format("%s caught, but unexpected message", throwableClass.getSimpleName()), expectedExceptionMessage, e.getMessage());
            return;
        }
        fail(String.format("Expected %s, but no exception was thrown.", throwableClass.getSimpleName()));
    }

    protected abstract void expectException();

}

Обратите внимание, что при выходе из инструкции «fail» в блоке try блокируется связанное исключение исключения; использование return в операторе catch предотвращает это.

20
задан BIBD 27 September 2016 в 15:06
поделиться

17 ответов

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

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

Другими словами,

#define max_length 5

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

const int max_length = 5;

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

#define MAX_LENGTH 5

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

58
ответ дан 17 October 2019 в 02:38
поделиться

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

0
ответ дан 17 October 2019 в 02:38
поделиться

@ck,

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

0
ответ дан 17 October 2019 в 02:38
поделиться

Я переназначил свой колпачок на клавишу Ctrl (Woo Emacs!). Поэтому я думаю, что это плохой стиль, когда мне нужно вводить 30-символьные имена, удерживая нажатой клавишу shift

2
ответ дан 17 October 2019 в 02:38
поделиться

Некоторые люди считают ВСЕ КОПИИ «старой школой». Обратите внимание на разницу между:

const string ErrorMessage = "Некоторое сообщение об ошибке.";

и

const string ERROR_MESSAGE = "Некоторое сообщение об ошибке.";

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

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

2
ответ дан 17 October 2019 в 02:38
поделиться

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

2
ответ дан 17 October 2019 в 02:38
поделиться

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

2
ответ дан 17 October 2019 в 02:38
поделиться

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

2
ответ дан 17 October 2019 в 02:38
поделиться

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

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

Кроме того, есть и другие способы, такие как различие между «константами» и обычными переменными, которые вы увидите во многих языках, таких как PHP Python и т. Д., Хотя Джеффу по какой-то причине это не нравится, и это явно противоречит рекомендациям по стилю кода C #.

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

3
ответ дан 17 October 2019 в 02:38
поделиться

ЭТО ТАКЖЕ делает код сложнее для чтения

3
ответ дан 17 October 2019 в 02:38
поделиться

ВСЕ КОРОБКИ КАК КРИТЬ НА КОГО-ТО.

4
ответ дан 17 October 2019 в 02:38
поделиться

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

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

5
ответ дан 17 October 2019 в 02:38
поделиться

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

7
ответ дан 17 October 2019 в 02:38
поделиться

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

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

9
ответ дан 17 October 2019 в 02:38
поделиться

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

, НЕ ДУМАЙТЕ О ИЗМЕНЕНИИ МЕНЯ ПОЗЖЕ КОД

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

20
ответ дан 17 October 2019 в 02:38
поделиться

Вы обнаружите, что многие высказывания Джеффа в первую очередь противоречивы, а точность - вторичная проблема. Его блог не был бы таким популярным, если бы он не был изредка подстрекательским. (Рассмотрим последнюю строку Смерть Космическим Неверным : «Тем не менее, только придурок будет использовать вкладки для форматирования своего кода».) Это честно субъективно. Не принимайте все, что он говорит, за Истину и Добро - так не должно быть. Если вы не согласны, идите надрать ему задницу в комментариях и посмотрите, ответит ли он. : )

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

30
ответ дан 17 October 2019 в 02:38
поделиться

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

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

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

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

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

Тем не менее, я думаю, что все колпачки действительно Трудно прочитать!

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

3
ответ дан 17 October 2019 в 02:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: