Inżynieria oprogramowania

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

4
Jak tworzyć lepsze recenzje kodu, gdy żądania ściągania są duże?
Oświadczenie: Istnieje kilka podobnych pytań, ale nie znalazłem żadnego, który dotykałby konkretnie problemów, które napotykasz podczas przeglądania dużego żądania ściągnięcia. Problem Wydaje mi się, że moje recenzje kodu mogą być wykonane lepiej. Mówię szczególnie o dużych recenzjach kodu z wieloma zmianami w ponad 20 plikach. Łatwo jest złapać oczywiste problemy …

1
Używanie klas znajomych do enkapsulacji funkcji prywatnych członków w C ++ - dobra praktyka czy nadużycie?
Zauważyłem więc, że można uniknąć umieszczania funkcji prywatnych w nagłówkach, wykonując coś takiego: // In file pred_list.h: class PredicateList { int somePrivateField; friend class PredicateList_HelperFunctions; public: bool match(); } // In file pred_list.cpp: class PredicateList_HelperFunctions { static bool fullMatch(PredicateList& p) { return p.somePrivateField == 5; // or whatever } } …

6
DDD spełnia OOP: jak zaimplementować repozytorium obiektowe?
Typowa implementacja repozytorium DDD nie wygląda zbyt dobrze, na przykład save()metoda: package com.example.domain; public class Product { /* public attributes for brevity */ public String name; public Double price; } public interface ProductRepo { void save(Product product); } Część infrastruktury: package com.example.infrastructure; // imports... public class JdbcProductRepo implements ProductRepo { …

1
Nadmiarowy kod wysłany w dół z Micro-frontendami
Rozumiem Micro-frontends, że kluczowym problemem, który rozwiązują, jest pomaganie przedsiębiorstwom w tworzeniu wielu, możliwych różnych zespołów, pracy nad poszczególnymi komponentami / małymi aplikacjami, które będą używane do tworzenia dużej aplikacji internetowej. Kluczowym problemem do rozwiązania jest tutaj zdolność wielu zespołów do samodzielnej pracy i wciąż w stanie zbudować duży kompozyt. …

5
Czy ma sens definiowanie interfejsu, jeśli mam już klasę abstrakcyjną?
Mam klasę z pewnymi domyślnymi / współdzielonymi funkcjami. Używam abstract classdo tego: public interface ITypeNameMapper { string Map(TypeDefinition typeDefinition); } public abstract class TypeNameMapper : ITypeNameMapper { public virtual string Map(TypeDefinition typeDefinition) { if (typeDefinition is ClassDefinition classDefinition) { return Map(classDefinition); } ... throw new ArgumentOutOfRangeException(nameof(typeDefinition)); } protected abstract string …

4
struct z bezsensowną wartością domyślną
W moim systemie często działają z kodami Airport ( "YYZ", "LAX", "SFO", itp), są one zawsze dokładnie w tym samym formacie (3 litery, reprezentowane jako wielkie litery). System zazwyczaj zajmuje się 25-50 z tych (różnych) kodów na każde żądanie API, z sumą ponad tysiąca alokacji, są one przekazywane przez wiele …



5
W jakich warunkach (jeśli w ogóle) dobrą praktyką jest odpytywanie dwóch serwerów i korzystanie z najszybszej odpowiedzi?
Zapytałem, jakie jest teraz pytanie usunięte przez społeczność na temat SO, dlaczego ktoś miałby używać skryptu javascript Promise.race, a użytkownik z wysokim przedstawicielem skomentował to: Jeśli masz dwie usługi, które obliczają pewną wartość, możesz przesłać do nich zapytanie równolegle i użyć tej, która zawsze zwróci najpierw wartość, zamiast zapytania o …


4
W jaki sposób klasa powinna komunikować się z użytkownikami, który podzbiór metod wdraża?
Scenariusz Aplikacja internetowa definiuje interfejs zaplecza użytkownika IUserBackendza pomocą metod getUser (uid) createUser (uid) deleteUser (identyfikator użytkownika) setPassword (identyfikator użytkownika, hasło) ... Różne interfejsy użytkownika (np. LDAP, SQL, ...) implementują ten interfejs, ale nie każdy backend może zrobić wszystko. Na przykład konkretny serwer LDAP nie pozwala tej aplikacji internetowej na …


2
Czy powinienem blokować wiersze w mojej bazie danych w chmurze podczas ich edycji przez użytkownika?
Tworzę aplikację komputerową, która utrwala dane w chmurze. Jedną z moich obaw jest rozpoczęcie edycji elementu w aplikacji i pozostawienie go na jakiś czas, powodując, że dane staną się nieaktualne. Może się to oczywiście zdarzyć również wtedy, gdy 2 osoby będą jednocześnie edytować ten sam element. Kiedy kończą edycję i …


5
Zabrania się wywoływania dowolnych funkcji / klas w kodzie zewnętrznym
Zetknąłem się z przypadkami, w których cenne byłoby ograniczenie dostępu do API zewnętrznych bibliotek i frameworków, aby zapobiec negatywnym konsekwencjom w systemie. Na przykład w aplikacji SharePoint może wydawać się naturalne, że można wywołać spList.Items.GetItemByIdelement listy, nawet w pętli, nie zdając sobie sprawy, że może to prowadzić do ogromnych problemó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.