was successfully added to your cart.

Корзина

Хотите, чтобы в вашем коде были тесты и комментарии? TDD + CDD

Ни один программист в здравом уме не горит желанием покрывать что-либо тестами или комментариями уже после того, как он это написал.

Если вы хотите, чтобы ваш код был покрыт тестами и комментариями, то надо начинать писать код именно с них.

С тестами все понятно, для этого существует методология TDD (Test Driven Development), которая рассказывает нам про красный -> зеленый -> синий циклы: сначала пишем тесты (красный), потом пишем код, который пройдет все тесты (зеленый), а потом рефакторим его (синий).

А угадайте как называется подход с комментариями? Правильно – Comment Driven Development (CDD). Здесь у нас серый и цветной циклы: сначала пишем что должно произойти комментариями (серый), потом уже пишем код (цветной).

Для примера возьмем логику регистрации пользователя и опишем ее по CDD:

class AuthService {
	// . New user Register UseCase
	register(req: RegisterRequest): RegisterResponse {
		// TODO. Validate request
		// ...

		// TODO. Check email uniqness
		// ...

		// TODO. Create new User
		// ...

		// TODO. Save to DB
		// ...

		// TODO. Return Success
		// ...
	}
}

И только теперь пишем имплементацию (я пишу псевдокод, не воспринимать его всерьез):

class AuthService {
	// . New user Register UseCase
	register(req: RegisterRequest): RegisterResponse {
		// . Validate request
		await req.validate()

		// . Check email uniqness
		const exist = this.repository.userEmailExist(req.email);
      	if (exist) {
          return new RegisterResponse(
            false,
            "User with this email already exist"
          )
        }

		// . Create new User
		const user = new User(req.email, req.password)

		// . Save to DB
		this.repository.save(user);

		// . Return Success
		return new RegisterResponse(true)
	}
}

Преимущества CDD:

  1. Возможность до начала написания кода подумать о том, что должно произойти
  2. Легко выставлять задачи джунам: пишете что и где должно произойти, а они уже имплементируют
  3. Код уже покрыт комментариями

Гораздо больше контента и развлечений в Telegram-канале