Hej, czy to prawda że lepiej implementować w swoim kodzie funkcjonalności tylko te co potrzebuję i resztę dobudowywać w miarę potrzeby zamiast implementowania na zapas na zasadzie „bo może się kiedyś przyda”?
to YAGNI, jak już zostało wspomniane.
KISS to "Keep it simple, stupid".
implementowania na zapas na zasadzie „bo może się kiedyś przyda”?
Tutaj dużą rolę pełni doświadczenie.
Ktoś niedoświadczony może wrzucić na zapas "bo może się kiedyś przyda", czego efektem będzie przeładowanie projektu o niepotrzebne rzeczy.
Ale odwrotna postawa:
implementować w swoim kodzie funkcjonalności tylko te co potrzebuję i resztę dobudowywać w miarę potrzeby
może poskutkować tym, że projekt będzie dryfował bez ładu ładu i składu.
Żeby umieć coś zaprojektować dobrze, trzeba nabyć najpierw doświadczenie. Przez doświadczenie rozumiem tutaj doświadczenie w robieniu konkretnych projektów i rozwiązywaniu konkretnych problemów. Ktoś doświadczony w niszy X, niekoniecznie będzie w stanie zaprojektować dobrze rzecz w niszy Y. Chociaż oczywiście ogólne doświadczenie programistyczne również ma duże znaczenie.
I teraz - jak jesteś już wystarczająco doświadczony, tj. przerobiłeś już temat wielokrotnie ucząc się na błędach (własnych i cudzych), to wiesz, co jest ważne i jesteś w stanie zrobić coś prosto, ani nie dodając na zapas, ani nie pisząc rzeczy na partyzanta.
Z mojego doświadczenia najskuteczniejszym można być wtedy, kiedy się jest w stanie przewidzieć, co będzie projekt potrzebował od A do Z, jednak robić tylko wybrane rzeczy z tego (np. tylko A, D, F, Z), bo się wie, jak one pasują do układanki. Czyli widzieć wszystko/cały przekrój z lotu ptaka i w szczególe, ale robić tylko wybrane rzeczy. Czyli design w głowie, a KISS i YAGNI w działaniu.
Wtedy jak będzie potrzeba dorobienia kolejnych rzeczy, to się je dorobi, bo projekt będzie miał na tyle lekką architekturę, że będzie można ją rozszerzać (ew. niektórych rzeczy się nie dorobi, ale wtedy będzie to świadoma decyzja projektowa, żeby zrezygnować z pewnych rzeczy na stałe narzucając sobie z góry pewne ograniczenia, żeby zachować prostotę designu).
I wtedy można faktycznie świadomie zrobić coś zachowując zasadę KISS.