Inżynieria oprogramowania

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


1
Dlaczego LLVM ma IR podobny do zespołu, a nie IR podobny do drzewa? Lub: dlaczego projekty kierowane są na LLVM IR zamiast AST klanu?
Dlaczego pośrednia reprezentacja LLVM (LLVM IR) jest bardziej złożona niż drzewiasta? Alternatywnie, dlaczego implementacje językowe są ukierunkowane na LLVM IR, a nie na AST? Nie próbuję zadawać jednocześnie dwóch różnych pytań, jeśli tak to wygląda. Wydaje mi się, że zarówno programiści, jak i programiści biblioteki doszli do konsensusu, że API …

7
Prymitywna vs klasa reprezentująca prosty obiekt domeny?
Jakie są ogólne wytyczne lub praktyczne zasady korzystania z obiektu specyficznego dla domeny w porównaniu do zwykłego ciągu lub liczby? Przykłady: Klasa wiekowa a liczba całkowita? Klasa FirstName vs String? UniqueID vs String Klasa PhoneNumber vs String vs Long? Klasa DomainName vs String? Myślę, że większość praktykujących OOP zdecydowanie powiedziałaby …

3
Kiedy można używać macierzy równoległych?
Wpadłem na kod (nowy kod), który używa tego, co nazywam „macierzami równoległymi” lub listami. Oznacza to, że istnieją 2 tablice, które zawierają powiązane dane i są powiązane ich pozycją (indeksem) w tablicy. Uważam to za mylące i podatne na wszelkiego rodzaju błędy. Rozwiązaniem, które zwykle proponuję, jest utworzenie obiektu wywoływanego …

2
Po co używać ogólnej metody z ograniczeniem typu zamiast samego typu?
W innym pytaniu StackExchange zauważyłem, że ktoś używa tego prototypu: void DoSomething<T>(T arg) where T: SomeSpecificReferenceType { //Code.... } Mając na uwadze, że istnieje tylko ograniczenie jednego typu ( SomeSpecificReferenceType), jaka jest różnica i korzyść z pisania go w ten sposób, zamiast po prostu: void DoSomething(SomeSpecificReferenceType arg) { //Code.... } …
14 c#  .net  generics 

3
Tłumy konstruujące jedno wdrożenie. DI beznadziejny? Używać lokalizatora usług?
Załóżmy, że mamy 1001 klientów, którzy konstruują swoje zależności bezpośrednio, zamiast akceptować zastrzyki. Według naszego szefa refaktoryzacja 1001 nie jest opcją. W rzeczywistości nie mamy nawet dostępu do ich źródła, tylko do plików klas. Powinniśmy „zmodernizować” system, przez który przechodzi 1001 klientów. Możemy refaktoryzować to, co lubimy. Zależności są częścią …

1
Jak zapobiec wprowadzaniu przez kolegę ekstremalnej złożoności i abstrakcji?
Mam bardzo trudny czas, ponieważ mój kolega wydaje się wystawiać Przedwczesne / niepotrzebne prace optymalizacyjne Przedwczesna deduplikacja z wątpliwymi abstrakcjami Na przykład używamy zmodyfikowanej architektury VIPER. Wprowadził klasę bazową dla komponentu Routera (używając generics) jako część implementacji pierwszego stosu vipera, nie wiedząc, co dokładnie zostanie powierzone w innych routerach. Teraz …

2
Real World - Liskov Substitution Principle
Tło: opracowuję strukturę przesyłania wiadomości. Ramy te umożliwią: wysyłanie wiadomości za pośrednictwem magistrali usług subskrybowanie kolejek na szynie komunikatów subskrybowanie tematów na szynie wiadomości Obecnie używamy RabbitMQ, ale wiem, że w najbliższej przyszłości przejdziemy do Microsoft Service Bus (w lokalu). Planuję utworzyć zestaw interfejsów i implementacji, aby po przejściu na …

5
OOP Styl kodowania: inicjować wszystko w konstruktorze?
Nadal uważam się za programistę-ucznia, więc zawsze szukam „lepszego” sposobu na typowe programowanie. Dzisiaj mój współpracownik argumentował, że mój styl kodowania robi niepotrzebną pracę i chcę usłyszeć opinie innych. Zazwyczaj, gdy projektuję klasę w języku OOP (zwykle C ++ lub Python), dzieliłem inicjalizację na dwie różne części: class MyClass1 { …


2
Jak wdrożyć menedżera procesów w pozyskiwaniu zdarzeń
Pracuję nad małą przykładową aplikacją do nauki pojęć CQRS i pozyskiwania zdarzeń. Mam Basketagregat i Productagregat, który powinien działać niezależnie. Oto pseudo kod pokazujący implementację Basket { BasketId; OrderLines; Address; } // basket events BasketCreated { BasketId; } ItemAdded { BasketId; ProductId; Quantity } AddItemSucceeded { BasketId; ProductId; Quantity } …


2
Teraz, gdy nie wszystkie deklaracje metod w interfejsie Java są publicznie abstrakcyjne, czy metody powinny być deklarowane za pomocą tych modyfikatorów?
Począwszy od Java 8, defaultmetody zostały wprowadzone do interfejsów. W efekcie oznacza to, że nie wszystkie metody interfacesą abstract. Począwszy od Java 9 (być może), privatemetody będą dozwolone. Oznacza to, że nie wszystkie metody interfacesą public abstract. Pytanie „Czy metody w interfejsie Java powinny być deklarowane z publicmodyfikatorem dostępu lub …

5
Jak zorganizować zasoby ciągu lokalizacji?
Tworzymy dużą aplikację, składającą się z wielu małych pakietów. Każdy pakiet ma własny zestaw plików zasobów do lokalizacji. Jakie jest najlepsze podejście do organizowania i nazywania ciągów lokalizacji? Oto moje dotychczasowe przemyślenia: Obsługa duplikatów Ten sam tekst (powiedzmy „kod pocztowy”) może występować wiele razy w ramach danego pakietu. Instynkt programistyczny …

7
Jak zaprojektować uwierzytelnianie użytkownika z aplikacji klienckich?
Tworzę aplikację, która będzie obsługiwać wielu użytkowników. Chodzi o to, że nie jestem w stanie dowiedzieć się, jak uwierzytelnić klienta / użytkownika. Tworzę aplikację, taką jak http://quickblox.com/, w której podam poświadczenia moim użytkownikom, którzy wykorzystają je do zbudowania aplikacji N , w których nie mogą podać swojej nazwy użytkownika i …

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.