Inżynieria oprogramowania

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

11
Dlaczego C ++ ma „niezdefiniowane zachowanie” (UB), a inne języki, takie jak C # lub Java, nie?
W tym artykule Przepełnienie stosu wymieniono dość kompleksową listę sytuacji, w których specyfikacja języka C / C ++ deklaruje, że jest „niezdefiniowanym zachowaniem”. Chcę jednak zrozumieć, dlaczego inne współczesne języki, takie jak C # lub Java, nie mają pojęcia „niezdefiniowane zachowanie”. Czy to oznacza, że ​​projektant kompilatora może kontrolować wszystkie …

5
Dlaczego Python nie zezwala na wieloliniowe lambdy?
Czy ktoś może wyjaśnić konkretne powody, dla których BDFL decyduje się na utworzenie pojedynczej linii dla lambda Python? To jest dobre: lambda x: x**x Powoduje to błąd: lambda x: x**x Rozumiem, że stworzenie wieloliniowej linii lambda „zakłóciłoby” normalne zasady wcięć i wymagałoby dodania kolejnych wyjątków, ale czy nie jest to …
50 lambda  python 




7
Zarządzanie i organizacja znacznie większej liczby klas po przejściu na SOLID?
W ciągu ostatnich kilku lat powoli przechodziliśmy na stopniowo coraz lepszy kod, kilka kroków naraz. W końcu zaczynamy przestawiać się na coś, co przynajmniej przypomina SOLID, ale jeszcze tam nie jesteśmy. Od czasu dokonania zmiany, jednym z największych zarzutów ze strony programistów jest to, że nie mogą znieść recenzowania i …

6
Dlaczego wiele funkcji zwracających struktury w C faktycznie zwraca wskaźniki do struktur?
Jaka jest zaleta zwracania wskaźnika do struktury w porównaniu do zwracania całej struktury w returninstrukcji funkcji? Mówię o funkcjach takich jak fopeni innych funkcjach niskiego poziomu, ale prawdopodobnie istnieją funkcje wyższego poziomu, które zwracają również wskaźniki do struktur. Uważam, że jest to raczej wybór projektowy niż tylko kwestia programowania i …

2
Jakie są ulepszenia MVP w stosunku do MVC?
Przez trzy dni czytałem o wzorcach Model-View-Controller (MVC) i Model-View-Presenter (MVP) . I jedno pytanie bardzo mnie niepokoi. Dlaczego projektanci oprogramowania wymyślili MVP, skoro już istniał MVC? Jakie napotkali problemy, których MVC nie rozwiązało (lub rozwiązało źle), ale MVP może rozwiązać? Jakie problemy ma rozwiązać MVP? Czytałem wiele artykułów o …


11
„Łatwy do uzasadnienia” - co to znaczy? [Zamknięte]
Słyszałem wiele razy, gdy inni programiści używają tego wyrażenia do „reklamowania” niektórych wzorców lub opracowywania najlepszych praktyk. Przez większość czasu ta fraza jest używana, gdy mówimy o korzyściach z programowania funkcjonalnego. Sformułowanie „łatwy do uzasadnienia” zostało użyte w obecnym brzmieniu, bez żadnego wyjaśnienia ani próbki kodu. Dla mnie staje się …

6
Wiele małych żądań a kilka dużych żądań (API Design)
Obecnie pracuję nad projektem z organizacją w następujący sposób: Klient - Pobiera dane z głównego serwera za pośrednictwem interfejsu API REST. Serwer - żąda danych z różnych innych serwerów za pośrednictwem interfejsów API innych firm Interfejsy API innych firm - Usługi poza moją kontrolą, które dostarczają dane do serwera (Reddit, …


3
C ++ silnie typedef typedef
Próbowałem wymyślić sposób na zadeklarowanie silnie typowanych typów maszynopisów, aby złapać pewną klasę błędów na etapie kompilacji. Często zdarza się, że wpisuję int w kilku typach id lub wektorze do pozycji lub prędkości: typedef int EntityID; typedef int ModelID; typedef Vector3 Position; typedef Vector3 Velocity; Może to uczynić cel kodu …
49 c++  c++11  type-safety 


5
Dlaczego wszystkie funkcje <algorytmu> zajmują tylko zakresy, a nie kontenery?
Istnieje wiele przydatnych funkcji &lt;algorithm&gt;, ale wszystkie działają na „sekwencjach” - parach iteratorów. Na przykład, jeśli mam kontener i lubię na nim biegać std::accumulate, muszę napisać: std::vector&lt;int&gt; myContainer = ...; int sum = std::accumulate(myContainer.begin(), myContainer.end(), 0); Gdy wszystko, co zamierzam zrobić, to: int sum = std::accumulate(myContainer, 0); Co jest w …

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.