Не изобретайте колесо заново, если не планируете больше узнавать о колесах Перевод

German German 22 Мая 2021 (ред)

В Боне (древняя религия тибетцев), есть медитация, где используется 3 цвета (белый, красный и зеленый). Я рассказал про эту медитацию, и один человек который слушал её, на следующий день сказал:

Я тут подумал, 3 цвета очень мало. Я добавил туда еще несколько.

Бог ты мой, 2000 лет бедные тибетцы не знали, что они делают! Надо было еще цвета оказывается добавить! )

Не изобретайте колесо заново, если не планируете больше узнавать о колесах

Оригинал статьи: Don't Reinvent The Wheel, Unless You Plan on Learning More About Wheels

Автор: Jeff Atwood 07 Feb 2009


Введение в Head First Design Patterns призывает нас не изобретать велосипед:

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

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

Я не совсем уверен. Я думаю, что изобретение колеса, если все будет сделано правильно, может быть полезным. Например, James Hart заново изобрел колесо. И ему понравилось:

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

Но кто такой Джеймс Харт? Еще один программист. Если это не имеет для вас достаточного веса, то это не особо и важно.

А еще есть Боб Ли, который возглавляет разработку основной библиотеки для Android.

В зависимости от контекста вы почти всегда можете заменить «Зачем изобретать велосипед?» на «Пожалуйста, не заставляйте меня узнавать что-то новое». В любом случае у оппонента нет реальных аргументов против создания чего-то нового и лучшего, но он также не хочет признавать свои нездоровые мотивы попыток остановить вас.

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

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

Итак, нет, не стоит изобретать велосипед. Если только вы не планируете больше узнавать о колесах.

4 Ответа

  1. Evg Evg 22 Мая 2021

    Я опубликовал эту статью, потому, что на Discourse встретил опять попытку переделать форум (Discourse) в Q&A систему. Какая навязчивая идея у всех, и у меня была. Столько лет это продолжается…

    Собственно формат работает, с ним то что будет ? Markdown, один в один отобразит, хотя парсеры разные. А вот отображение общее, разница есть. Просто открыть 2 вкладки и сравнить. Телефон не беру, с ним ещё тут не занимался.

    1. German German 22 Мая 2021 (ред.)

      Тут ужасное место, это рекомендовано внизу. )

  1. OleStep OleStep 22 Июня 2021 (ред.)

    Хорошая статья! А вообще, это повод посмотреть комментарий в чате.

    Он появится там?

    1. Evg Evg 22 Июня 2021 (ред.)

      Да, это открытый пост и он там есть.