29 Сентябрь 2017

Comments

0
 Сентябрь 29, 2017
 0
Category Принципы

YAGNI — Вам это не понадобится

В далёкой прошлом, я удосужился прочитать книгу Бьерна Страуструпа, Язык программирования С++, в которой он приводин одни из принципов программирования:

Системы, которые мы создаем, стремятся к пределу сложности.

Предположим, перед нами стоит задача написать класс математических действий. В задаче указаны действия, сложения, вычитания, умножения и деления. Попробуем реализовать такой класс:

public class Math {
    public Integer sum(Integer x, Integer y) {
        return x + y;
    }

    public Integer sub(Integer x, Integer y) {
        return x - y;
    }

    public Integer mul(Integer x, Integer y) {
        return x * y;
    }

    public Integer div(Integer x, Integer y) {
        return x / y;
    }
}

Так смотрим и думаем про себя, а разве в математике только такие действия используются? Почему бы не вывести возведение в степень или вычисление корня? Но, давайте обратимся к задаче? В ней сказано реализовать только то, что мы уже реализовали. Т.е. если мы начнём дореализовывать новый функционал, то тем самым обрекаем его на безвременное забвение, ведь в ТЗ ни слова о этих свойствах. Так и другие разработчики, когда будут читать ТЗ, будут уверены, что в классе нет ничего лишнего. В итоге, мы потратили время не на нужды, которые не были заявлены, хорошо это или плохо, решать вам.

Добавить комментарий