Schematy blokowe i wywołania metod


11

Robię kilka schematów blokowych i zastanawiam się, czy podchodzę do tego poprawnie. Zasadniczo mam kilka wywołań metod i każde z nich schemat blokowy. Jednak kilka z tych metod wywołuje metodę, aby uzyskać informacje, a następnie kontynuować. Zobacz ten przykład:

wprowadź opis zdjęcia tutaj

Mam 3 inne metody, które również wywołują GetQueue () i zastanawiam się, czy reprezentuję to poprawnie. Strumień AddQueue () wizualnie wygląda na zepsuty.

UWAGA: Zmiany wprowadzone na moim schemacie blokowym:

wprowadź opis zdjęcia tutaj


Czy ten poziom szczegółowości obrazu jest naprawdę konieczny? Wiem, że kiedyś takie schematy blokowe były popularne, ale wydaje się, że obecnie popadły w niełaskę z wielu powodów ... Zasadniczo są one zbędną formą dokumentacji; musisz je aktualizować, a kod i tak powinien już odpowiednio reprezentować to, co pokazano na schemacie blokowym (co oznacza: lepiej poświęcić czas na wytworzenie większej ilości kodu).
Robert Harvey,

Zostałem o to poproszony przed przejściem do innego klienta.
Keith Barrows

@Robert Harvey: Schematy blokowe były przydatne w dawnych czasach, gdy ludzie pisali bezpośrednio kod maszyny lub asemblera. Mogą być przydatne dla wczesnych programistów FORTRAN i BASIC, którzy nie mieli dobrego zestawu struktur kontrolnych. W dzisiejszych czasach jedynym powodem, dla którego to robię, jest to, że klient chciał, aby był to produkt dostarczalny i był gotów odpowiednio zapłacić.
David Thornley,

Opracowując je od zera, bardzo pomocne okazało się użycie żółtych lepików, które podniosły się o 90 stopni w przypadku decyzji. Pozwala to przenosić je i wstawiać procesy między nimi. Kiedy wszyscy jesteście donami, wprowadźcie je do swojego oprogramowania.
Michael Riley - AKA Gunny

Nadal używam schematów blokowych, chociaż uważam, że testy jednostkowe są często lepsze do tego samego celu. Nie są jednak produktami dostarczalnymi; Używam ich, aby uzyskać kontrolę przepływu bezpośrednio w mojej głowie.
Michael K

Odpowiedzi:



2

Niedawno przeprowadziłem kilka schematów blokowych i zmagałem się z tym samym problemem, jak prezentować wywołania podprogramów, a może także wywołania metod i funkcji, jak można je teraz nazywać.

Uznałem konwencję, że oddzielam podprogram POŁĄCZENIA od podprogramu REFERENCJE. W przypadku pierwszego używam zwykłego prostokąta pokazującego wywołanie wraz z argumentami, używając zmiennych, które obowiązują w tym momencie podczas wykonywania programu.

Używam dwustronnego prostokąta „predefiniowanego procesu” po prostu jako odniesienie do innego schematu blokowego, który zawiera definicję tej funkcji lub podprogramu. Prostokąt podprogramu nie musi pokazywać argumentów podprogramu, ponieważ jest to część schematu definiującego podprogram, o którym mowa, ale pomocne może być dodanie go już w odwołaniu, aby ktokolwiek go czytał, mógł zobacz znaczenie rzeczywistych argumentów użytych w wywołaniu.

Zwiększa to liczbę prostokątów, ale czyni jaśniejszym, że te inne schematy blokowe istnieją, aby wyszukać definicję niektórych wywoływanych funkcji. Często, jeśli funkcja jest prosta, nie utworzę dla niej osobnego diagramu, ale po prostu udokumentuję go ustnie.

Używam również symbolu „dokumentu”, aby powiedzieć, że szczegóły powinny być wyszukiwane na liście kodów.

Celem schematu blokowego nie jest dla mnie tworzenie programu, ale ułatwienie innym zrozumienia programu. Myślę, że pomoc należy postrzegać z lotu ptaka i należy pamiętać o tym celu. Nie służą one do wizualnego opisu KAŻDEGO szczegółu programu, szczegóły są widoczne z kodu w razie potrzeby. Schemat blokowy to tylko jedno zdjęcie twojego programu z punktu widzenia wysokiego poziomu.

Utrzymanie wysokiego poziomu schematów blokowych oznacza również, że nie ma potrzeby aktualizowania ich w miarę modyfikowania kodu.

To są zdjęcia. Jak każda dobra historia, dokumentacja oprogramowania powinna również zawierać zdjęcia, które dają alternatywny punkt widzenia na kod.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.