Dlaczego akurat tylko te trzy? Lista cech, którymi powinien charakteryzować się dobry kod, jest dużo dłuższa.
Można tę listę uszczegółowić, ale w efekcie będzie się ona składać na te trzy wartości. Zresztą nie ja to wymyśliłem, tylko Kent Beck, ale w pełni się z nim zgadzam.
Szybkość działania kodu jest bardzo istotna w pewnych zastosowaniach. Czas pracy programisty może wydawać się drogi, ale czas pracy użytkownika pomnożony przez milion użytkowników lub koszt pracy serwera pomnożony przez 10 tysięcy serwerów może dawać jeszcze większą kwotę.
Czas pracy programisty nie wydaje się drogi - on jest drogi. Bottlenecki można znaleźć relatywnie szybko i sprawnie je zoptymalizować gdy kod jest łatwy w utrzymaniu i modyfikacji.
A optymalizowanie czegoś co póki co nie wykazuje żadnych złych objawów jest stratą czasu.
To jest niestety bardzo często używane jako wymówka słabych programistów nie potrafiących pisać wydajnego kodu za pierwszym podejściem (niekoniecznie optymalnego, ale przynajmniej łatwo-optymalizowalnego i niezawierającego WTFów wydajnościowych). Bardzo często dobre przemyślenie architektury, struktur danych i algorytmów na samym początku pod kątem wydajności powoduje, że otrzymujemy znacznie wydajniejszy program prawie bez wydłużania czasu trwania projektu. Nikomu nie życzę optymalizowania źle zaprojektowanego i naklepanego byle jak programu, który na 2 dni przed terminem okazał się 10x zbyt powolny.
Można od razu pisać optymalny wydajnościowo kod, ale nie kosztem czytelnego kodu i tylko jeśli mamy dość doświadczenia, żeby stwierdzić "tak, w tym miejscu na pewno jest bottleneck".
I jeszcze to co kolega napisał wcześniej:
Zasady optymalizacji Jacksona:
- Nie optymalizuj
- (dla ekspertów) jeszcze nie optymalizuj.