Inżynieria oprogramowania

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

2
Wnioskowanie typu w Golang / Haskell
Czytałem, że Go nie ma prawdziwego wnioskowania o typie w takim sensie, jak języki funkcjonalne, takie jak ML lub Haskell, ale nie byłem w stanie znaleźć prostego do zrozumienia porównania dwóch wersji. Czy ktoś mógłby wyjaśnić w podstawowych terminach, w jaki sposób wnioskowanie o typie w Go różni się od …


4
Modelować relacje z DDD (czy z rozsądkiem)?
Oto uproszczony wymóg: Użytkownik tworzy Questionz wieloma Answers. Questionmusi mieć co najmniej jeden Answer. Wyjaśnienie: pomyśl Questioni Answerjak w teście : jest jedno pytanie, ale kilka odpowiedzi, z których kilka może być poprawnych. Użytkownik jest aktorem, który przygotowuje ten test, dlatego tworzy pytania i odpowiedzi. Staram się modelować ten prosty …

1
Wzór budowania menu
Mam problem z obejściem obsługi menu w stanie aktywnym, gdy menu nie jest używane do routingu. Pochodzę z Drupal, gdzie system menu obsługuje również routing. więc ustawianie stanu aktywnego i stanu aktywnego szlaku jest obsługiwane przez trasę (która działa również jako system renderowania menu). Teraz wiele frameworków PHP ma klasy …

4
Pominięcie „destruktorów” w C prowadzi zbyt daleko od YAGNI?
Pracuję nad aplikacją średnio osadzoną w C przy użyciu technik podobnych do OO. Moje „klasy” to moduły .h / .c wykorzystujące struktury danych i struktury wskaźników funkcji do emulacji enkapsulacji, polimorfizmu i wstrzykiwania zależności. Teraz można oczekiwać, że myModule_create(void)funkcja będzie miała myModule_destroy(pointer)odpowiednik. Ale ponieważ projekt jest osadzony, zasoby, które są …

1
Testowanie luki między jednostką a integracją: integracja w małych, komponentowych, integracyjnych testach
W ciągu ostatnich kilku tygodni zastanawiałem się, jak wypełnić lukę w naszej metodologii testowania. Upraszczając, testy jednostkowe są zbyt małe, a tradycyjne testy integracyjne są zbyt duże. Częstym scenariusz pojawia się gdzie Ai Bstosowania zarówno komponent C. Jednak Ai Bmają nieco inne wymagania dotyczące i zrobić nieco inne założenia dotyczące …

3
Czy zduplikowana składnia do definiowania nazwanych funkcji jest złym wyborem projektowym?
Modeluję język programowania dla zabawy, a na składnię ma duży wpływ Scala - w szczególności definicje funkcji. Wystąpił problem projektowy, ponieważ mój język nie rozróżnia funkcji zdefiniowanych za pomocą defskładni (metody klasowe) i funkcji anonimowych przypisanych do wartości (utworzonych przy użyciu =>) - usuwa różnice zarówno w implementacji, jak i …

6
Podziel duże interfejsy
Korzystam z dużego interfejsu z około 50 metodami dostępu do bazy danych. Interfejs został napisany przez mojego kolegę. Omówiliśmy to: Ja: 50 metod to za dużo. To zapach kodu. Kolega: Co mam z tym zrobić? Chcesz dostępu do DB - masz go. Ja: Tak, ale jest niejasne i trudno je …

4
Czy IObserver .NET <T> był przeznaczony do subskrybowania wielu IObservable?
Istnieją interfejsy IObservable i IObserver w .NET (także tu i tutaj ). Co ciekawe, konkretne wdrożenie IObserver nie zawiera bezpośredniego odniesienia do IObservable. Nie wie, kto jest subskrybentem. Może tylko wywołać subskrybenta. „Wyciągnij pinezkę, aby anulować subskrypcję”. edycja: Subskrybent implementuje IDisposable. Myślę, że ten schemat został zastosowany, aby zapobiec problemowi …

1
Jak oddzielnie analizować dane pola / pliku wieloczęściowego?
Chcę przeanalizować formularz wieloczęściowy dwa razy: raz, aby pobrać przychodzące pola, a później przetworzyć przesyłanie pliku. Staram się zachować właściwy rozdział problemów w mojej aplikacji Node: Kontroler odpowiada za obsługę pól przychodzących. Model odpowiada za logikę pliku do przesłania. Muszę przekazać dane pól do modelu, aby utworzyć nową instancję, więc …
9 data  node.js  upload 



3
Przechowujesz edytowalną treść witryny?
Mamy stronę internetową opartą na Django, dla której chcieliśmy, aby niektóre treści (tekst i logika biznesowa, taka jak plany cenowe) były łatwe do edycji we własnym zakresie , dlatego postanowiliśmy przechowywać je poza bazą kodu. Zwykle przyczyną jest jedna z następujących przyczyn: To coś, co ludzie nietechniczni chcą edytować. Jednym …

4
Czy ta metoda jest czysta?
Mam następującą metodę rozszerzenia: public static IEnumerable&lt;T&gt; Apply&lt;T&gt;( [NotNull] this IEnumerable&lt;T&gt; source, [NotNull] Action&lt;T&gt; action) where T : class { source.CheckArgumentNull("source"); action.CheckArgumentNull("action"); return source.ApplyIterator(action); } private static IEnumerable&lt;T&gt; ApplyIterator&lt;T&gt;(this IEnumerable&lt;T&gt; source, Action&lt;T&gt; action) where T : class { foreach (var item in source) { action(item); yield return item; } } …

2
Czy nasłuchiwanie zdarzeń powinno odbywać się w słabych referencjach?
Zwykle detektory zdarzeń nie powinny przeżyć obiektu, który je zarejestrował. Czy to oznacza, że ​​detektory zdarzeń powinny być domyślnie przechwytywane przez słabe referencje (przechowywane w słabych kolekcjach przez obiekty, w których nasłuchują rejestratorzy)? Czy istnieją uzasadnione przypadki, w których słuchacz powinien przeżyć swojego twórcę? A może taka sytuacja jest błędem …

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.