Как долго длится код? - PullRequest
       69

Как долго длится код?

40 голосов
/ 14 декабря 2009

Я возвращаюсь к некоторым из более мелких TODO в моем коде. Один из них находится в классе, который обрабатывает неполные даты, например, Январь 2001. Он отлично работает для дат, которые будут видны в нашей системе (1990 - 2099 гг.), И корректно завершится неудачей для других дат.

TODO, который я оставил для себя, состоит в том, что я не обращаюсь с датами в 2100 году и позже. Я не думаю, что это стоит потраченных усилий на исправление этой конкретной проблемы, но я знаю об ошибках Y2k. Если бы мы были уже в 2080 году, думаю, я бы думал иначе и исправил бы ошибку.

Так как долго длится код? Как далеко мы должны планировать, чтобы наши системы продолжали работать?

Обновление

Хорошо, спасибо за ваш вклад. Я думаю, что я собираюсь оставить вариант TODO в коде и ничего не делать. Мысли, которые я нашел наиболее интересными, были:

  • @ Адриан - Вечность, я думаю, что это наиболее правильное предположение, ваша точка зрения на ВМ хорошая.
  • @ jan-hancic - Это зависит, да, это так.
  • @ chris-ballance - я предполагаю, что я умру к тому времени, когда будет введено это ограничение, поэтому они могут осквернить мою могилу, если захотят, но я буду мертв, поэтому я буду преследовать его жопа.

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

Ответы [ 24 ]

71 голосов
/ 14 декабря 2009

Дольше, чем вы ожидаете.

35 голосов
/ 14 декабря 2009

Вечность.

Учитывая тенденцию, что старая система продолжает работать на виртуальных машинах, мы должны предположить, что весь полезный код будет работать вечно. Существует много систем, которые работают с 60-х годов, например, бэкэнд-код в финансовом секторе, и, похоже, нет никаких признаков того, что эти системы когда-либо будут заменены. (А тем временем интерфейс заменяется раз в два года на новейшие достижения в области веб-технологий. Таким образом, чем ближе ваш код к ядру вашей системы, тем больше вероятность того, что он будет работать вечно.)

21 голосов
/ 14 декабря 2009

Вы не можете иметь общий ответ здесь. Зависит от того, какой проект вы строите. Если вы пишете программное обеспечение для космического зонда, вы можете написать его так, чтобы оно работало в течение следующих 100 и более лет. Но если вы программируете специальное рождественское предложение для веб-страницы вашей компании, вам может хватить нескольких недель ...

16 голосов
/ 14 декабря 2009

Предположим, что тот, кто будет поддерживать код, является психопатом и имеет ваш домашний адрес .

11 голосов
/ 14 декабря 2009

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

Мой совет - не планировать код на последние 100 лет. Вместо этого постарайтесь убедиться, что весь ваш код будет работать в течение одинакового промежутка времени, то есть одна его часть не должна выходить из строя через 2 года, а другая - через 100 лет. Помните, что вы всегда должны сначала исправить самое слабое звено, поэтому нет смысла укреплять самое сильное звено.

10 голосов
/ 14 декабря 2009

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

Кстати, я рекомендую указывать идентификатор проблемы (например, номер дела FogBugz) в каждом комментарии TODO, чтобы люди могли подписаться и отслеживать этот TODO.

5 голосов
/ 14 декабря 2009

в бессмертных словах Дана Бернштейна: Не вносите свой вклад в проблему Y10K!

3 голосов
/ 14 декабря 2009

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

В 2100 году нам не нужно записывать код. Будет какой-то интерфейс мозг-машина.

2 голосов
/ 14 декабря 2009

Итак, мы недавно создали формат метки времени, в котором время хранится в 64-разрядном целом числе без знака в микросекундах с 1970 года. Оно продлится до 586912 года, чего должно быть достаточно.

Кодирование "навсегда" не нужно - конечно, вы могли бы использовать BigIntegers и тому подобное везде, но почему? Просто будьте готовы более 5 или 10 лет. Двадцатилетний производственный код в наши дни не является чем-то необычным, и я подозреваю, что в ближайшем будущем средний жизненный цикл станет еще длиннее.

1 голос
/ 14 декабря 2009

Я всегда пытался закодировать, как будто мои приложения должны работать «вечно». Я уверен, что больше не буду в 2100 году, но зная, что срок действия моего программного обеспечения истекает, это не дает мне чувствовать себя хорошо. Если вы знаете о таких вещах, старайтесь избегать их! Вы никогда не узнаете, но какой-нибудь неизвестный программист в будущем может быть благодарен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...