Inżynieria oprogramowania

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

5
Czy nadal można mówić o modelu anemicznym w kontekście programowania funkcjonalnego?
Większość wzorców projektowania taktycznego DDD należy do paradygmatu zorientowanego obiektowo, a model anemiczny opisuje sytuację, w której cała logika biznesowa jest umieszczana w usługach, a nie w obiektach, co czyni je rodzajem DTO. Innymi słowy model anemiczny jest synonimem stylu proceduralnego, który nie jest zalecany w przypadku modelu złożonego. Nie …



8
Czy nowe pole boolowskie jest lepsze niż odwołanie zerowe, gdy wartość może być znacząco nieobecna?
Załóżmy na przykład, że mam klasę Member, która ma lastChangePasswordTime: class Member{ . . . constructor(){ this.lastChangePasswordTime=null, } } którego lastChangePasswordTime może być nieobecny, ponieważ niektórzy członkowie mogą nigdy nie zmieniać swoich haseł. Ale zgodnie z Jeśli wartości zerowe są złe, co należy zastosować, gdy wartość może być znacząco nieobecna? …
39 null  boolean 

11
Czy interfejs API REST powinien zwrócić błąd wewnętrzny serwera 500, aby wskazać, że zapytanie odwołuje się do obiektu, który nie istnieje?
Pracuję z interfejsem API REST, który znajduje się na serwerze, który obsługuje dane dla wielu urządzeń IoT. Moim zadaniem jest wysłanie zapytania do serwera za pomocą interfejsu API w celu zebrania określonych informacji o wydajności tych urządzeń. W jednym przypadku uzyskuję listę dostępnych urządzeń i odpowiadających im identyfikatorów, a następnie …


6
Umożliwienie znalezienia kodu przy użyciu unikatowych globalnie identyfikatorów wiadomości
Wspólny wzorzec lokalizowania błędu wynika z tego skryptu: Obserwuj dziwność, na przykład brak wyjścia lub zawieszający się program. Znajdź odpowiedni komunikat w wynikach dziennika lub programu, na przykład „Nie można znaleźć Foo”. (Poniższe informacje mają znaczenie tylko wtedy, gdy jest to ścieżka podana w celu zlokalizowania błędu. Jeśli ślad stosu …

8
Odwracanie instrukcji JEŻELI
Więc programuję od kilku lat, a ostatnio zacząłem używać ReSharpera więcej. Jedną z rzeczy, które ReSharper zawsze mi sugeruje, jest „odwrócenie” instrukcji „if” w celu zmniejszenia zagnieżdżania ”. Powiedzmy, że mam ten kod: foreach (someObject in someObjectList) { if(someObject != null) { someOtherObject = someObject.SomeProperty; } } A ReSharper zasugeruje, …

3
Dlaczego powinienem używać „operacji funkcjonalnych” zamiast pętli for?
for (Canvas canvas : list) { } NetBeans sugeruje użycie „operacji funkcjonalnych”: list.stream().forEach((canvas) -> { }); Ale dlaczego jest to preferowane ? Jeśli tak, to trudniej jest je przeczytać i zrozumieć. Dzwonisz stream(), a następnie forEach()używasz wyrażenia lambda z parametrem canvas. Nie rozumiem, jak to jest ładniejsze niż forpętla w …

7
Tłumaczenie zewnętrznych danych na język, w którym programujesz
Nie jestem pewien, co zrobić z następującymi elementami: Pobieramy dane z zewnętrznego narzędzia w ramach naszego własnego narzędzia. Te dane są napisane w języku niderlandzkim. Piszemy nasz kod Java w języku angielskim. Czy powinniśmy przetłumaczyć ten holenderski na angielski, czy zachować go w języku holenderskim? Na przykład mamy 2 działy: …
39 naming  translate 

13
Czy niewłaściwe jest używanie parametru boolowskiego do określania wartości?
Według Czy niewłaściwe jest używanie parametru boolowskiego do określania zachowania? , Wiem, jak ważne jest unikanie używania parametrów boolowskich do określania zachowania, np .: orginalna wersja public void setState(boolean flag){ if(flag){ a(); }else{ b(); } c(); } Nowa wersja: public void setStateTrue(){ a(); c(); } public void setStateFalse(){ b(); c(); …

6
Ciągi kodujące na stałe, które nigdy się nie zmienią
Tak więc, starając się napisać program do koniugacji czasowników (algorytmicznie, nie poprzez zbiór danych) dla języka francuskiego, natknąłem się na niewielki problem. Algorytm koniugacji czasowników jest właściwie dość prosty w przypadku 17 lub więcej przypadków czasowników i działa według określonego wzorca dla każdego przypadku; dlatego sufiksy koniugacji dla tych 17 …
39 design  strings 

3
Dlaczego Python nie ma funkcji „spłaszczania” list?
Erlang i Ruby mają funkcje spłaszczania tablic. Wydaje się, że jest to takie proste i przydatne narzędzie, które można dodać do języka. Można to zrobić: >>> mess = [[1, [2]], 3, [[[4, 5]], 6]] >>> mess.flatten() [1, 2, 3, 4, 5, 6] Lub nawet: >>> import itertools >>> mess = …

12
Dlaczego większość języków programowania ma specjalne słowa kluczowe lub składnię do deklarowania funkcji? [Zamknięte]
Większość języków programowania (zarówno języki dynamiczne, jak i statyczne) mają specjalne słowa kluczowe i / lub składnię, która wygląda znacznie inaczej niż deklarowanie zmiennych dla deklaracji funkcji. Widzę funkcje tak samo, jak deklarowanie innego nazwanego bytu: Na przykład w Pythonie: x = 2 y = addOne(x) def addOne(number): return number …

5
Problemy z unikaniem klas Naming Smurf z przestrzeniami nazw
Wyciągnąłem stąd termin nazywanie smerfa (numer 21). Aby zaoszczędzić każdemu, kto nie zna problemu, nazewnictwo Smurf polega na prefiksowaniu szeregu powiązanych klas, zmiennych itp. Wspólnym przedrostkiem, aby uzyskać „a SmurfAccountViewprzechodzi SmurfAccountDTOna SmurfAccountController” itd. Rozwiązaniem, o którym ogólnie słyszałem, jest utworzenie przestrzeni nazw smurf i upuszczenie przedrostków smurf. To ogólnie mi …

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.