OpenFileDialog.ShowDialog()
PictureNameTextEdit.Text = System.IO.Path.GetFileName(OpenFileDialog.FileName)
Никакие метрики относительно стиля кодирования не являются частью такого предупреждения.
Для меня это - [приблизительно 1 116] статический анализ кода , который может действительно быть 'на' все время:
я поместил бы тест покрытия во второй шаг, тесты как таковые могут занять время.
<час>не забывают, что "дрянной" код не обнаруживается метриками, но комбинация и эволюция (как в" тенденция ) метрик: посмотрите , Каково восхищение метриками кода? вопрос.
, Который означает, Вы не должны только рекомендовать, чтобы метрики кода к "автоматически определили "дрянной код"", но также необходимо рекомендовать правильной комбинации и анализу тенденции продвинуться те метрики.
<час>На заметке на полях, я действительно совместно использую Ваш разочарование ;), и я не совместно использую точку зрения tloach (в комментариях другого, отвечает), "Задайте неопределенный вопрос, получите неопределенный ответ", он говорит..., что Ваш вопрос заслуживает определенного ответа.
Я проявляю многоярусный подход с первым уровнем, являющимся разумным смещением удобочитаемости только сложностью решаемой проблемы. Если это не может пройти тест удобочитаемости, я обычно считаю код менее, чем хорошим.
Отношение комментариев, которые включают профанацию в комментарии, которые не делают.
Выше = лучше кодируют.
Строки комментариев / Строки кода
value > 1 -> bad (too many comments)
value < 0.1 -> bad (not enough comments)
Корректируют числовые значения согласно Вашему собственному опыту;-)
Иногда, Вы просто знаете это, когда Вы видите его. Например, этим утром я видел:
void mdLicense::SetWindows(bool Option) {
_windows = (Option ? true: false);
}
я просто должен был спросить меня, 'почему кто-либо будет когда-либо делать это?'.
Покрытие кода имеет некоторое значение, но иначе я склонен полагаться больше на профилирование кода, чтобы сказать, является ли код дрянным.
Количество бесполезных комментариев к значимым комментариям:
'Set i to 1'
Dim i as Integer = 1
К сожалению, нет метрики, о которой я знаю. Что-то для учета, неважно, что Вы выбираете, программисты будут играть система, чтобы заставить их код выглядеть хорошим. Я видел, что везде любой вид "автоматической" метрики помещается в место.
Много преобразований в и от строк. Обычно это - знак, что разработчик не соглашается с тем, что идет и просто пробует случайные вещи, пока что-то не работает. Например, я часто видел код как это:
object num = GetABoxedInt();
// long myLong = (long) num; // throws exception
long myLong = Int64.Parse(num.ToString());
, когда то, что они действительно хотели, было:
long myLong = (long)(int)num;
Не автоматическое решение, но я нахожу WTF's в минуту полезным.
(источник: osnews.com )
Количество предупреждений, которые выкладывает компилятор, когда я делаю сборку.
Количество закомментированных строк на строку производственного кода. Обычно это указывает на неаккуратного программиста, который не понимает управление версиями.
Разработчики всегда обеспокоены метриками, используемыми против них, и называющий "дрянной" код не хорошее начало. Это важно, потому что, если Вы волнуетесь по поводу своих разработчиков, играющих вокруг них тогда, не используют метрики ни для чего, что является к их преимуществу/недостатку.
способ, которым это работает лучше всего, не позволяют метрике сказать Вам, где код является дрянным, но используйте метрику для определения, где необходимо посмотреть. Вы смотрите при наличии обзора кода и решения о том, как устранить проблему, между разработчиком и рецензентом. Я был бы также ошибка на стороне разработчика против метрики. Если код все еще появляется на метрике, но рецензенты думают, что это хорошо, оставьте его в покое.
, Но важно иметь в виду этот играющий эффект, когда Ваши метрики начинают улучшаться. Большой, я теперь имею 100%-е покрытие, но являюсь модульными тестами польза? Метрика говорит мне, что я в порядке, но я все еще должен проверить ее и взгляд на то, что получило нас там.
Нижняя строка, человек превосходит машину.
Несуществующие тесты (показанный покрытием кода). Это не обязательно индикатор, что код плох, но это - большой предупредительный знак.
Профанация в комментариях.
Я не полагаю, что существует любая такая метрика. За исключением кода, который на самом деле не делает то, к чему он предполагается (который является целым дополнительным уровнем дрянных) 'дрянной' код средств кода, который трудно поддержать. Это обычно означает, что специалисту по обслуживанию трудно понять, который является всегда в некоторой степени субъективной вещью, точно так же, как плохая запись. Конечно, существуют случаи, где все соглашаются, что запись (или код) является дрянной, но очень трудно записать метрику для него.
Плюс все относительно. Код, делающий очень комплексную функцию, в минимальной памяти, оптимизированной для каждого последнего цикла скорости, будет выглядеть очень плохо по сравнению с простой функцией в условиях никаких ограничений. Но это не дрянно - это просто делает то, к чему это имеет.
Мой флаг предупреждения любимого: прокомментируйте свободный код. Обычно означает, что кодер не остановился для размышления об этом; плюс он автоматически сложно понимать, таким образом, взлеты дрянное отношение.
Моя ставка: комбинация цикломатической сложности (CC) и покрытия кода от автоматизированных тестов (TC).
CC | TC
2 | 0% - good anyway, cyclomatic complexity too small
10 | 70% - good
10 | 50% - could be better
10 | 20% - bad
20 | 85% - good
20 | 70% - could be better
20 | 50% - bad
...
crap4j - возможный инструмент (для Java) и объяснение понятия ... в поисках дружественного инструмента C#: (
Одни только метрики не определяют дрянной код. Однако они могут определить подозрительный код.
существует много метрик для программного обеспечения OO. Некоторые из них могут быть очень полезными:
существуют намного более жизнеспособные метрики, и они могут быть вычислены с помощью инструментов. Это может быть хорошей справкой в идентификации дрянного кода.
На первый взгляд: грузовое культовое приложение идиом кода.
, Как только я более внимательно рассмотрел: очевидные ошибки и неправильные представления программистом.
This hilarious blog post on The Code C.R.A.P Metric could be useful.
TODO:
комментарии в производственном коде. Просто показывает, что разработчик не выполняет задачи до конца.