Prawidłowe planowanie i projektowanie programu

3

Cześć.
Chciałbym, abyście przedstawili mi treściwie swoje cykle rozwoju oprogramowania. Od czego zaczynacie - każdy etap. Czyli co robicie zanim siadacie do kodowania. A może od razu kodujecie?
Jakich wzorców i standardów się trzymacie, żeby kod był spójny i logiczny? Macie jakieś konkretne zasady typu:

C++ dane w klasie: najpierw publiczne potem chronione a potem prywatne.

1

Moja działka to aplikacje desktopowe w C#. Opiszę jak podchodzę do procesu zgodnie z TDD.

Generalnie, jeżeli robimy coś bardziej skomplikowanego niż tygodniowy projekcik to najpierw trzeba stworzyć jakieś założenia. W przypadku pisania aplikacji dla klienta należy uzgodnić z nim wymagania stawiane oprogramowaniu. Przed pisaniem jakiegokolwiek kodu należy mieć jasno sprecyzowaną koncepcję co oprogramowanie ma robić i w jaki sposób. Bez tego można poprawiać kod w nieskończoność.

Jak już wiadomo co będzie tworzone, przechodzę do pisania architektury modelu. Tworzę tylko publiczne klasy i ich publiczne metody. Metody nic nie robią poza wyrzucaniem NotImplementedException. W tym etapie zastanawiam się jak później obiekty będą używane / czego dokładnie od nich oczekuję. Wiem dzięki temu jakie powinny mieć properties, jakie metody o jakich sygnaturach.

Jak już mam gotową architekturę, opisuję ją komentarzami. Dzięki temu mam dokumentację, podczas wykorzystywania obiektów będą się wyświetlały pomocne opisy oraz jest to dobra podstawa do testowania obiektów w testach jednostkowych (wiesz co robi obiekt, jakie wyrzuca wyjątki, to wiesz co trzeba przetestować).

Jak mam architekturę i jej dokumentację, to piszę testy.

Jak pokryłem już cały kod testami, wtedy dopiero zabieram się za pisanie implementacji.

0

na początku należy zastanowić się jakie klasy będą występować w systemie oraz jakie konkretne zachowania mają obiekty i właściwości. Pamiętaj żeby nie implementować za wcześnie funkcji składowych tylko robić to na końcu. Później zastanowić się jakie są relację pomiędzy poszczególnymi klasami i wyodrębnić klasy abstrakcyjne oraz wzorce projektowe które możemy użyć. Na końcu implementacja metod danych klas.

1 użytkowników online, w tym zalogowanych: 0, gości: 1