2009-12-02 4 views
8

Я вижу, что некоторые программисты добавляют код, который, в конце концов, ничего полезного не делает. Например (C#):Допустимо ли иметь бесполезный код?

[Serializable] 
class Foo { 
    // ... 
    string SerializeMe() { 
     return new XmlSerializer(typeof(this)).Serialize(this).ToString(); // serialize to xml (syntax wrong, not important here) 
    } 
} 

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

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

ответ

4

Требуется ли даже минимальное усилие, чтобы прочитать этот дополнительный (бесполезный, как вы добавили) код?

Если да (и я думаю, что это так), то это не должно быть в коде. Код, подобный этому, загрязнен дополнительными фрагментами, которые не полезны, они есть «на всякий случай».
«Позже рефакторинг» этих вещей может быть болезненным, через 6 часов 12 месяцев, кто будет помнить, действительно ли это было использовано?

0

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

+0

Sidenote: Код комментирования, или приписывать без функции, не всегда бесполезна;) – Ropstah

+1

Я могу и делать бесполезные вещи все время, например, спорить с женой ... – 2009-12-02 14:46:22

+0

Это не бесполезно, так как это заставляет вас (или ее) производить гормоны, которыми вы, она или вы оба зависимы. – Ropstah

1

В коммерческом проекте - я бы сказал, нет, особенно если кто-то может удалить его для чтения, а затем имеет момент WTF.

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

+1

-1 Я бы посоветовал вам оставлять фрагменты в плагине фрагмента или исходном контроле. –

+1

Кроме личного проекта, он может сделать все, что захочет. –

+0

В любом случае вы должны использовать источник управления, и его обязательно не нужно проверять.;) –

1

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

10

Мое правило,

Если его не используется избавиться от него.

Все излишние комментарии, attrributes являются всего лишь шумом и помогают вашему коду стать нечитаемым. Если они оставлены, они поощряют более избыточный код в базе кода. Так что удалите его.

18

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

+0

Согласен, это тоже моя точка зрения. Это также помогает при сравнении предыдущих версий одного и того же файла, потому что вы видите, что изменилось! Вы можете сказать: «О, мы отказались от поддержки сериализации с версии xxx», например. Поэтому он добавляет скрытую документацию. –

5

Я стараюсь следовать принципу YAGNI, так что это беспокоит меня.

1

Это плохой код.

Плохой код - обычная практика.

Это, как говорится, иногда не стоит усилия по изменению вещей, которые не «сломаны».

+0

Я полностью не согласен. это отношения, подобные тем, которые в течение десятилетий содержат ошибки в исходном коде, опасаясь прикоснуться к «священному коду». Что, если я возьму ваш любимый роман и нарисую над ним граффити? Вы хотели бы прочитать этот роман? –

1

Казалось бы, совершенство достигается не тогда, когда больше не может быть добавлено, но когда больше нельзя удалить.— Антуан де Сент-Экзюпери

+0

Модификация цитаты из Антуана де Сент-Экзюпери, авиаконструктора, написавшего замечательную детскую книгу. Что-то вроде «Совершенство приходит не тогда, когда ...». –

+1

Поздравляю, ваше время кодирования только утроилось, и кто бы ни поручил, вы разозлитесь. – Graviton

+0

Благодаря Civilization IV (и Leonard Nimoy) я знаю, что оригинальная цитата (перевод с французского): Казалось бы, совершенство достигается не тогда, когда больше нельзя добавить, но когда больше не удастся удалить. - Антуан де Сент-Экзюпери (1900 - 1944) – Dolphin

4

Действительно не нравится.

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

0

Если есть активный план, чтобы использовать эту дополнительную функцию, а затем сохранить его.

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

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

2

Неиспользованный однострочный код может и должен быть удален.

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

(Да, в теории вы можете получить его из системы управления, но старый удален код в системе управления версиями не совсем высоко обнаруживаемым.)

Смежные вопросы