Это вопрос о том, как работать в команде.
Недавно я работал над моим первым большим (~ 80 классами, Java) проектом программирования с командой из 6 человек, хотя только 4 из нас постоянно работали над кодом. Мы распределили работу, которая должна была быть сделана рано, и в какой-то момент мне нужно было вызвать метод, который еще не был реализован одним из моих со-программистов. Как рекомендуемый способ справиться с этим?
Варианты, которые я видел, хотя мне не очень нравятся какие-либо из них:
Пишу себе a
//TODO
и пересматриваю эту строку кода позже, чтобы проверить, был ли метод реализован за это время.Попросить соответствующего члена команды осуществить это сейчас .
Создание пользовательского исключения runtimeException с четким описанием того, что еще не реализовано. (По крайней мере, нам не нужно долго искать, чтобы выяснить, чего не хватает)
Добавление необходимого метода в их класс и запись их
//TODO
в теле сообщения, возможно, также отправит им быстрое сообщение об этом изменении. (Теперь это не моя проблема, но это может вызвать раздражающие конфликты слияния, если они в то же время работали над этим методом)Определение абстрактных классов или интерфейсов для всего перед тем, как писать код, выполняющий эту работу. (Не слишком хорошо работал, потому что эти интерфейсы часто менялись)
Ответы:
Это интересный вопрос, и ответ может быть проще, чем вы думаете.
Проще говоря, напишите тесты, которые подтвердят ваши предположения. Неважно, если вы делаете реализацию или ваши коллеги-программисты
Длинный ответ.
Любой из перечисленных вами вариантов несколько пассивен и требует , чтобы вы вернулись и пересмотрели код (если он существует) рано или поздно.
Чтобы достичь достаточного уровня тестирования, я бы посоветовал вам взглянуть на две дисциплины.
TDD - разработка, основанная на тестировании - это поможет вам описать свое намерение и в достаточной степени протестировать его. Это также дает вам возможность имитировать или подделывать методы и классы (также используя интерфейсы), которые еще не реализованы. Код и тесты будут по-прежнему компилироваться и позволять вам тестировать свой собственный код в изоляции от кода ваших коллег-программистов. (см .: https://en.wikipedia.org/wiki/Test-driven_development )
ATDD - разработка, основанная на приемочных тестах - это создаст внешний цикл (вокруг цикла TDD), который поможет вам протестировать функцию в целом. Эти тесты станут зелеными только тогда, когда будет реализована вся функция, что даст вам автоматический индикатор, когда ваши коллеги завершат свою работу. Довольно аккуратно, если вы спросите меня.
Предостережение: в вашем случае я бы писал только простые приемочные тесты, а не пытался привлечь слишком много бизнес-стороны, так как для начала было бы слишком много. Напишите простые интеграционные тесты, в которых собраны все компоненты системы, необходимые для этой функции. Это все что требуется
Это позволит вам поместить свой код в конвейер непрерывной интеграции и создать высоконадежную реализацию.
Если вы хотите получить дальнейшее в этой теме, проверьте следующие ссылки:
источник
Спросите окурки.
Или пиши их сам. В любом случае, вы и ваши коллеги должны договориться об интерфейсах и о том, как они предназначены для использования. Это соглашение должно быть относительно прочным, чтобы вы могли развиваться против заглушек - не говоря уже о том, чтобы вы могли создавать свои собственные макеты для модульного тестирования ...
источник
В вашей ситуации я бы поговорил с членом команды, ответственным за эту функцию. Может случиться так, что они смогут расставить приоритеты в развитии этой функции, чтобы вы могли начать использовать ее раньше.
Я бы держался подальше от вашего четвертого варианта. Вы написали весь свой код и, как вы говорите, больше не считаете его своей проблемой. Ваш коллега затем пишет о реализации функции и больше не считает это своей проблемой. Кто на самом деле собирается проверить правильность написанного вами кода?
источник