Я думаю, что ваш "табличный" пример гораздо проще читать , сам по себе.Проблема в том, что у нас есть 50 лет текстовых инструментов для работы с исходным кодом в виде строк текста.Вот две наиболее очевидные проблемы, с которыми вы столкнетесь:
Все мои любимые инструменты обработки текста, такие как diff
и grep
, работают в строках.Чем больше вы ставите на одну строку, тем меньше значение имеют мои инструменты.Например, если я хочу что-то найти в условии if, я должен отфильтровать ложные срабатывания из предложения ifTrue.
(Если вы пишете на языке с более регулярным синтаксисом в расширяемом редакторе,как и в Lisp в Emacs, это не такая большая проблема, потому что обходить фактические структуры тривиально, но C # имеет очень сложный синтаксис, и я не знаю простого способа пройти через мой код C # с помощью 1 или 2строк кода, так что текстовые инструменты все еще правят здесь.)
Ваша самая длинная строка составляет около 95 символов - и это вместо ..
вместо реальных аргументов, так что это будетеще дольше.Действительно длинные строки могут быть болью для работы.Линии различной ширины (так как большинство моих линий не будут такими длинными) означают потраченное впустую пространство экрана, поскольку все мои окна имеют прямоугольную форму.Или я должен продолжать изменять размеры окон при прокрутке.Как бы то ни было, редакторы и инструменты отлично справляются с обработкой файлов с множеством строк, но довольно отвратительны при обработке строк большой и разной длины.
Я бы хотел написать этот код,Я хотел бы прочитать этот код.Я бы очень не хотел, чтобы в этом коде было выполнено трехстороннее слияние.: -)
В отличие от этого, я собираюсь выйти на конечность и сказать, что, по-моему, большинство других ответов здесь пока койка:
- различные вещи о символе
0x09
: тогда используйте пробелы, а не символы табуляции;в наши дни это просто здравый смысл - моноширинные шрифты: все виды стандартов кода, которые я видел, падают, если вы используете шрифт переменной ширины, а не только этот
- «это соглашение»: хорошо, но это не говорит о том, почему это соглашение или почему этот случай не должен быть исключением из соглашения (потому что каждый набор кодовых соглашений, которые я когда-либо видел, допускает исключения)
- StyleCop говорит, что это плохо: ты работаешь на свои инструменты или они работают на тебя?см. также: «это соглашение»
- трудно поддерживать: не в моем редакторе, и если это сложно в вашем редакторе, вам нужно научиться его использовать или получить лучший
- у некоторых людей не будет вашего редактора: зависят ли все ваши стандарты кодирования от того, что его легко написать произвольно пустым редактором?Если мы нанимаем кого-то, кто настаивает на использовании Блокнота, это их проблема, и мы не собираемся менять наш исходный код для них.Смотрите также: «трудно поддерживать»
- это противоречиво: конечно, но (поскольку я не робот), это не обязательно усложняет чтение;каждый комикс в моей газете отформатирован по-разному (в некоторых случаях на самом деле по-разному!), но я не нахожу ни одного из них вообще трудным для чтения
(Flame off!)
В конце концов, я думаю, что оба эти стиля являются паршивыми для такого рода кода по разным причинам.Если вам нужна таблица, то используйте switch
, или IDictionary<ResultType,Action>
, или список-списки или -tuples (если порядок важен), или выгрузите правила в файл конфигурации, или что-то еще.Вы правы, считая, что стол должен выглядеть как стол.Единственное, чего вам не хватает, так это того, что у нас есть конструкции, которые бы выглядели как таблицы, которые бы работали очень хорошо, и if
не является одним из них.: -)