Zamiast patrzeć na formalny tryb definiowania prostoty, wolałbym zdefiniować prostotę jako atrybut jakości pisania kodu.
Nie stawiam pewnej prostoty, ale kiedy nazywasz coś prostym, czy nie.
1. Przejście kodu:
jak łatwo poruszać się po kodzie? Czy łatwo jest zauważyć, gdzie są zapisane funkcje API? Czy łatwo jest zrozumieć przepływy wywołań, na przykład, które metody wywołują inne (i dlaczego) - czy są zaimplementowane dobre maszyny stanów lub algorytmy jednoznacznie określone?
Gdy przejście do kodu jest łatwe, kod jest prosty do naśladowania.
2. Nazewnictwo
Podczas gdy inne standardy kodowania sprawiają, że kod wygląda na bardziej przejrzysty - najważniejsze jest nazywanie klas / instancji obiektów / Zmiennych / metod. Stosowanie jasnych i jednoznacznych nazw jest wyraźnie ma ogromny wpływ na Prostota kodu. Kiedy trudno jest zidentyfikować prostą nazwę, jest to znak, że możesz chcieć ponownie przemyśleć pomysł, że jest to zmienna / metoda.
3. Interpretacja i odniesienia
Czy każda z metod ma do odegrania wyraźną rolę. Czy każdą zmienną / atrybut można łatwo określić, jaką rolę odgrywają? Gdy fragment kodu robi coś, co implikuje założenia lub wpływa na niepowiązany zestaw zmiennych, może stać się koszmarem konserwacyjnym.
4. Zależność lub sprzężenie
Trudno to ocenić na podstawie samego kodu, ale staje się bardzo widoczne, jeśli ktoś próbuje naprawić twoje błędy. Kiedy jakieś inne rzeczy zmieniają się w innym obiekcie, czy operacja tutaj się zmienia? Czy te zmiany są oczywiste? Czy musisz tak często zmieniać interfejs API, aby uwzględnić różne rzeczy. Sugerują one, że relacje między modułami nie są proste
5. Dane wejściowe użytkownika lub aplikacji
Wreszcie, jak proste są dane wejściowe użytkownika lub aplikacja są akceptowane w interfejsie API / UI? Kiedy wielu możliwych użytkowników / aplikacji (do różnych celów) musi ci dać - czy są oczywiste? Czy istnieją stany / szczegóły, które nie są związane z wyższą abstrakcją, ale wciąż przechodzą do przodu i do tyłu?
Proste pytanie, które zazwyczaj zadałbym, brzmi następująco: Jeśli zamiast programu, gdybym poprosił człowieka o tę samą funkcję, czy wypełniłbym tę informację w formie papierowej ? Jeśli nie, nie jestem tutaj wystarczająco prosty .
Nie powiem, że ta lista jest wyczerpująca, ale sądzę, że kryteria są takie, jak łatwe lub trudne jest używanie i modyfikowanie oprogramowania. To jest proste.