С чего начать строить настоящую кодовую базу с нуля? - PullRequest
1 голос
/ 08 июля 2010

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

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

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

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

Так с чего начать?Существуют ли книги или онлайн-документация, объясняющая, как создать такую ​​кодовую базу, или описывающая существующую или воображаемую кодовую базу, как она работает, как она поддерживается и т. Д .?

Ответы [ 3 ]

0 голосов
/ 08 июля 2010

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

Продвигаясь вперед, вам нужно сесть со своей командой и определить, какие у вас продукты, как они сконструированы, где происходит наложение и какие продукты могут извлечь выгоду из этого повторного использования. Вам нужно внимательно изучить структуру сборки ваших продуктов и изменить ее, чтобы включить библиотеку commons (которую вы собираетесь собирать).

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

0 голосов
/ 08 июля 2010

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

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

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

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

Некоторые полезные ссылки об интерфейсах. Некоторые ссылки рассказывают об объектно-ориентированных языках, но принципы и идеи могут быть применены к любому другому типу языка.

http://en.wikipedia.org/wiki/Interface_%28computer_science%29#Software_interfaces_in_object_oriented_languages

http://en.wikipedia.org/wiki/Interface_%28computer_science%29#Programming_against_software_interfaces

0 голосов
/ 08 июля 2010

Используйте службу контроля версий, такую ​​как Google Code или GitHub . Таким образом, резервное копирование кода выполняется онлайн, и при необходимости вы можете вернуться к более старым версиям.

...