Ответ
-
Анализ задачи: Четко понимаю требования, входные/выходные данные, edge cases. Если что-то неясно — уточняю сразу.
-
Проектирование:
- Разбиваю на подзадачи
- Выбираю структуры данных (мапы, слайсы и т.д.)
- Определяю интерфейсы, если нужно
-
Реализация:
func Solve(input []int) (result int, err error) {
if len(input) == 0 {
return 0, errors.New("empty input")
}
// Основная логика
for _, v := range input {
result += v
}
return result / len(input), nil
}
-
Тестирование:
- Пишу unit-тесты с разными сценариями
- Проверяю на производительность (benchmarks) при необходимости
-
Рефакторинг: Упрощаю код, удаляю дублирование, оптимизирую.
-
Документирование: Добавляю комментарии к публичным методам, пишу примеры использования.