Inżynieria oprogramowania

Pytania i odpowiedzi dla profesjonalistów, nauczycieli akademickich i studentów pracujących w cyklu życia systemów

9
Dlaczego nie może być żadnych niejawnych konwersji?
Jak rozumiem, niejawne konwersje mogą powodować błędy. Ale to nie ma sensu - czy zatem normalne konwersje nie powinny również powodować błędów? Dlaczego nie mieć? len(100) praca przez język interpretujący (lub kompilujący) jako len(str(100)) zwłaszcza, że ​​jest to jedyny (wiem) sposób na to, aby działał. Język wie, jaki jest błąd, …


3
Czy powinniśmy dodawać konstruktory do struktur?
Często używamy struktur c ++ do definiowania struktury danych w przeciwieństwie do klasy, która może być kompletnym modułem z metodami składowymi. W głębi duszy wiemy, że oba są takie same (luźno mówiąc). Fakt, że często używamy / traktujemy struktury jako jednostki tylko danych, powoduje, że nie dodajemy również domyślnych konstruktorów. …

3
Grupowanie wielu repozytoriów Git, które są częścią tego samego ogólnego projektu
Załóżmy, że mam projekt, który ma wiele komponentów: komponent serwera, komponent aplikacji internetowej, komponent iOS, komponent Android itp. Te komponenty są oddzielnymi bazami kodów, ale są również luźno powiązane (np. Zmiana na serwerze kod może również wymagać zmiany we wszystkich innych komponentach) Jaki jest najbardziej efektywny sposób organizacji tego projektu …
14 git 


5
Obsługa wyjątków w programie, który musi działać 24/7
Czytałem, że powinniśmy wychwytywać tylko wyjątki, które można obsłużyć, co sprawia, że ​​łapanie podstawowej klasy wyjątków (w tym przypadku C #) jest złym pomysłem (oprócz innych powodów). Obecnie jestem częścią projektu, w którym do tej pory nie widziałem niczego poza wychwyceniem podstawowego wyjątku. Wspomniałem, że uważa się to za złą …

6
Jaki jest najlepszy sposób na skalowanie i dzielenie sprawnego zespołu tworzącego aplikację internetową?
Niedawno dołączyłem do firmy, w której pracuję jako mistrz scrum w zwinnym projekcie deweloperskim budującym aplikację internetową. Zespół ma być wkrótce maksymalnym rozmiarem dla zwinnego zespołu (oczekuje 9 w przyszłym tygodniu). Mówiliśmy o potencjalnym podzieleniu zespołu na dwa zespoły, nie tyle, aby skrócić awanse (które nie są w tej chwili …


2
Przyczyna instrukcji return w wywołaniu funkcji rekurencyjnej
Po prostu miałem wątpliwości. Następujący podprogram (na przykład do wyszukiwania elementu na liście) ma na końcu instrukcję return: list *search_list(list *l, item_type x) { if (l == NULL) return(NULL); if (l->item == x) return(l); else return( search_list(l->next, x) ); } Nie mogę uzyskać znaczenia instrukcji return na końcu (tj. Return …

2
Programowanie obiektowe a programowanie wektorowe
Jestem rozdarty między projektowaniem obiektowym a projektowaniem wektorowym. Uwielbiam umiejętności, strukturę i bezpieczeństwo, jakie obiekty dają całej architekturze. Ale jednocześnie szybkość jest dla mnie bardzo ważna, a posiadanie prostych zmiennych zmiennoprzecinkowych w tablicy naprawdę pomaga w językach / bibliotekach wektorowych, takich jak Matlab lub numpy w Pythonie. Oto fragment kodu, …

2
Co wujek Bob rozumie przez „nazwy wyrażeń rzeczownikowych”?
Czytam Clean Code autorstwa Uncle Bob. Ponieważ nie jestem językiem ojczystym-angielskim, nie mogłem zrozumieć następującego oświadczenia: Klasy i obiekty powinny mieć rzeczownik lub rzeczownik frazy nazwiska jak Customer, WikiPage, Account, i AddressParser. Należy unikać takich słów jak Manager, Processor, Data, lub Infow imieniu klasy. Nazwa klasy nie powinna być czasownikiem. …

2
Shared Cache - sprawdzone metody unieważniania
Chciałbym wiedzieć, jakie byłoby lepsze podejście do unieważnienia / aktualizacji obiektów pamięci podręcznej. Wymagania wstępne Posiadanie zdalnego serwera memcached (służącego jako pamięć podręczna dla wielu aplikacji) Wszystkie serwery są hostowane przez lazur (regiony koligacji, te same centra danych) Rozmiar obiektu pamięci podręcznej wynosi od 200 bajtów do 50 kilobajtów Podejście …

6
Adnotuj kod źródłowy za pomocą diagramów jako komentarzy
Piszę dużo kodu (głównie c ++ i javascript), który dotyczy geometrii obliczeniowej i grafiki oraz tego rodzaju tematów, więc odkryłem, że diagramy wizualne są nieodzowną częścią procesu rozwiązywania problemów. Właśnie ustaliłem, że „och, czy nie byłoby po prostu fantastycznie, gdybym mógł jakoś dołączyć ręcznie rysowany diagram do fragmentu kodu jako …

3
W MVC DAO należy wywoływać z kontrolera lub modelu
Widziałem różne argumenty przeciwko bezpośredniemu wywoływaniu DAO z klasy Controller, a także DAO z klasy Model. Faktycznie osobiście uważam, że jeśli podążamy za wzorcem MVC, kontroler nie powinien być sprzężony z DAO, ale z klasą Model powinien wywoływać DAO od wewnątrz, a kontroler powinien wywoływać klasę modelu. Dlaczego, ponieważ możemy …

11
Zasada KISS zastosowana do projektowania języka programowania?
KISS („zachowaj to proste, głupie” lub „utrzymaj to proste głupie”, patrz np. Tutaj ) jest ważną zasadą w tworzeniu oprogramowania, nawet jeśli najwyraźniej wywodzi się z inżynierii. Cytowanie z artykułu w Wikipedii: Najlepszym przykładem tej zasady jest historia, w której Johnson przekazał zespołowi inżynierów garść narzędzi, z wyzwaniem, że projektowany …

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.