Inżynieria oprogramowania

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

9
Dlaczego wolisz menedżera pakietów niż folder biblioteki?
Kiedy myślę o zaletach i wadach statycznego folderu biblioteki i menedżera pakietów, mam wrażenie, że folder biblioteki jest lepszym rozwiązaniem. Plusy, które widzę w folderze biblioteki: Nie potrzebujesz zewnętrznego narzędzia do zarządzania pakietami. Kompilacja nie wymaga połączenia z Internetem. Szybsza kompilacja (bez sprawdzania pakietu). Prostsze środowisko (wymagana mniejsza wiedza). Plusy, …

7
Jak ważne jest stworzenie warstwy usługi?
Zacząłem budować aplikację w 3 warstwach (DAL, BL, UI) [obsługuje głównie CRM, niektóre raporty sprzedaży i zapasy]. Kolega powiedział mi, że muszę przejść do wzorca warstwy usługi, że programiści przyszli do wzorca usługi z ich doświadczenia i jest to lepsze podejście do projektowania większości aplikacji. Powiedział, że w ten sposób …

7
Jeśli funkcje muszą wykonać sprawdzanie wartości zerowej przed wykonaniem zamierzonego zachowania, czy to zły projekt?
Więc nie wiem, czy to dobry, czy zły projekt kodu, więc pomyślałem, że lepiej zapytam. Często tworzę metody, które przetwarzają dane z wykorzystaniem klas i często przeprowadzam wiele kontroli metod, aby upewnić się, że nie otrzymam pustych referencji lub innych błędów. Dla bardzo podstawowego przykładu: // fields and properties private …
67 c#  design  validation 

16
Jak uniknąć logicznych błędów w kodzie, gdy TDD nie pomogło?
Niedawno pisałem mały fragment kodu, który w przyjazny dla człowieka sposób wskazywałby, ile lat ma wydarzenie. Może to na przykład oznaczać, że wydarzenie miało miejsce „Trzy tygodnie temu”, „Miesiąc temu” lub „Wczoraj”. Wymagania były stosunkowo jasne i był to idealny przypadek dla rozwoju opartego na testach. Testy pisałem jeden po …

10
Jakie jest właściwe zastosowanie downcastingu?
Downcasting oznacza rzutowanie z klasy podstawowej (lub interfejsu) do podklasy lub klasy liścia. Przykładem downcast może być rzutowanie z System.Objectinnego typu. Downcasting jest niepopularny, może pachnie kodem: doktryna obiektowa preferuje na przykład definiowanie i wywoływanie metod wirtualnych lub abstrakcyjnych zamiast downcastingu. Jakie, jeśli w ogóle, są dobre i właściwe przypadki …

10
Jak i dlaczego ewoluowały współczesne ramy aplikacji internetowych, aby oddzielić trasy adresów URL od systemu plików?
W porównaniu do około 10 lat temu zauważyłem zmianę na frameworki wykorzystujące styl routingu, który oddziela ścieżkę URL od systemu plików. Zwykle odbywa się to za pomocą wzorca kontrolera frontowego. Mianowicie, kiedy wcześniej ścieżka URL była mapowana bezpośrednio do systemu plików, a zatem odzwierciedlała dokładne pliki i foldery na dysku, …


9
Jakie jest znaczenie zasady optymalizacji programu 90/10?
Według Wikipedii reguła optymalizacji programu 90/10 stwierdza, że ​​„90% czasu wykonania programu spędza się na wykonywaniu 10% kodu” (patrz drugi akapit tutaj ). Naprawdę tego nie rozumiem. Co to dokładnie znaczy? Jak 90% czasu wykonania można poświęcić tylko na wykonanie 10% kodu? A co z pozostałymi 90% kodu? Jak można …

7
Jak przejść z programu w fazie rozwoju do wersji?
W pewnym momencie program się rozwija. Funkcje są dodawane, usuwane lub zmieniane przez cały czas. Każda wersja jest niczym innym jak prototypem. Nie marnuję wtedy dużo czasu na pisanie super czystego kodu, ponieważ nigdy nie wiem, jak długo coś trwa. Oczywiście staram się zachować jakość kodu zgodnie z pewnymi standardami, …

8
Jeśli muszę użyć fragmentu pamięci przez cały okres użytkowania mojego programu, czy naprawdę trzeba go zwolnić tuż przed zakończeniem programu?
W wielu książkach i samouczkach słyszałem, jak zaakcentowano praktykę zarządzania pamięcią i czułem, że wydarzyłyby się jakieś tajemnicze i okropne rzeczy, gdybym nie zwolnił pamięci po jej użyciu. Nie mogę mówić za innymi systemami (chociaż dla mnie rozsądnie jest założyć, że stosują one podobną praktykę), ale przynajmniej w systemie Windows …

7
Dlaczego tak wiele projektów woli „git rebase” niż „git merge”?
Jedną z zalet korzystania z DVCS jest przepływ pracy edycji-zatwierdzania-scalania (w stosunku do edycji-scalania-zatwierdzania często wymuszanej przez CVCS). Zezwalanie na rejestrowanie każdej unikalnej zmiany w repozytorium niezależnie od fuzji zapewnia, że DAG dokładnie odzwierciedla prawdziwy rodowód projektu. Dlaczego tak wiele witryn mówi o tym, że chcą „uniknąć zatwierdzeń scalania”? Czy …


10
Czy warto zatwierdzać wyłącznie w celu rozwiązywania niekrytycznych literówek?
Jeśli napotkam niekrytyczną literówkę w kodzie (powiedzmy, błędną apostrofę w instrukcji print (error)), czy warto podjąć zobowiązanie, aby rozwiązać ten błąd, czy może po prostu należy go zostawić w spokoju? W szczególności jestem ciekawy, jak porównać przeglądanie dziennika zmian do wartości rozwiązania tych niekrytycznych literówek. Skłaniam się do ich rozwiązania. …

9
W którym momencie mogę powiedzieć, że „nauczyłem się” języka?
W ciągu kilku lat programowania bawiłem się wszystkim, od Ruby po C ++. Zrobiłem wszystko, od nauki podstawowej składni (Ruby) po ukończenie kilku dużych (dla mnie) projektów, które poszerzyły moje umiejętności językowe. Biorąc pod uwagę tę różnorodność (i fakt, że prawdziwa nauka języka nigdy się nie kończy), kiedy mogę powiedzieć, …


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.