Закончил один проект и меня перевели на следующий, который очень похож по свое структуре.
Вскоре я отчетливо увидел как все будет развиваться, если не предпринять меры по переиспользованию и небольшому рефакторингу кода в предыдущем проекте.
В связи с тем, что задачи и реализации похожи, то есть два варианта:
- либо я копирую все необходимое с предыдущего проекта и немножко подстраиваю по новые задачи
- либо вытаскиваю общий код и делаю его немного абстрактным
Проще и быстрее скопировать все и положить в новый проект, но скоро будет еще один и что? копировать опять? Так дело дальше не пойдет, ведь это надо еще и поддерживать. Решил создать модуль на JavaScript и назвать его utils в который можно положить все общее между проектами.
Зачем нам нужна реализация логирования в каждом проекте с незначительным отличием? Может лучше вынести эту часть кода и дать возможность передавать значение через параметры?
Создаем плагин на веб странице? Ок! Разница только в имени, но суть одна и та же. Вынес в утилиты.
Каждый раз мы создаем новый обработчик событий, но при этом разница только в keyCode. Коллеги по новой пишут обработчик событий простыми if...else, у меня же нормальная реализация с подписчиками на события и раздачей по идентификатору.
И ведь уже к новому проекту написали кучу кода на JavaScript, но при этом не посмотрели что у нас уже это есть и даже в лучшем варианте.
В тесты добавили нумерацию как уникальный идентификатор, при этом выглядит он как обычный порядковый номер теста. Клево все, но вот нам надо добавить новый тест в середину и присвоить очередной номер. Проект растет и увеличивается зоопарк. Теперь у нас есть 1-2-3-4..35-60-90-36...
И ведь я подходил к человеку за разъяснениями почему так сделано? Мне не дали внятных объяснений и я ушел. Ушел потому что был стажером и только начал вникать как все работает. Теперь я думаю пришло время поднять этот вопрос еще раз. Можем ведь сделать первым числом нумерацию, а потом идентификатор, который должен быть уникальным и не меняться на протяжении жизни всего проекта. В итоге мы получим что то похожее на "1|id_1|Description".
Два дня работы на новом проекте дали взглянуть на многие вещи со стороны и понять в каких местах я удачно продумал возможность пере использования, а где не очень.
Вскоре я отчетливо увидел как все будет развиваться, если не предпринять меры по переиспользованию и небольшому рефакторингу кода в предыдущем проекте.
В связи с тем, что задачи и реализации похожи, то есть два варианта:
- либо я копирую все необходимое с предыдущего проекта и немножко подстраиваю по новые задачи
- либо вытаскиваю общий код и делаю его немного абстрактным
Проще и быстрее скопировать все и положить в новый проект, но скоро будет еще один и что? копировать опять? Так дело дальше не пойдет, ведь это надо еще и поддерживать. Решил создать модуль на JavaScript и назвать его utils в который можно положить все общее между проектами.
Зачем нам нужна реализация логирования в каждом проекте с незначительным отличием? Может лучше вынести эту часть кода и дать возможность передавать значение через параметры?
Создаем плагин на веб странице? Ок! Разница только в имени, но суть одна и та же. Вынес в утилиты.
Каждый раз мы создаем новый обработчик событий, но при этом разница только в keyCode. Коллеги по новой пишут обработчик событий простыми if...else, у меня же нормальная реализация с подписчиками на события и раздачей по идентификатору.
И ведь уже к новому проекту написали кучу кода на JavaScript, но при этом не посмотрели что у нас уже это есть и даже в лучшем варианте.
В тесты добавили нумерацию как уникальный идентификатор, при этом выглядит он как обычный порядковый номер теста. Клево все, но вот нам надо добавить новый тест в середину и присвоить очередной номер. Проект растет и увеличивается зоопарк. Теперь у нас есть 1-2-3-4..35-60-90-36...
И ведь я подходил к человеку за разъяснениями почему так сделано? Мне не дали внятных объяснений и я ушел. Ушел потому что был стажером и только начал вникать как все работает. Теперь я думаю пришло время поднять этот вопрос еще раз. Можем ведь сделать первым числом нумерацию, а потом идентификатор, который должен быть уникальным и не меняться на протяжении жизни всего проекта. В итоге мы получим что то похожее на "1|id_1|Description".
Два дня работы на новом проекте дали взглянуть на многие вещи со стороны и понять в каких местах я удачно продумал возможность пере использования, а где не очень.