Inżynieria oprogramowania

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

1
Dlaczego semafor nazywa się semaforem?
Nie wydaje mi się, że semafor kolejowy opisuje semafor lepiej niż jakikolwiek inny ogólny obiekt sygnalizacyjny, taki jak flaga lub światło stopu. Nawet coś takiego jak brelok (ludzie zdejmują klucze z pierścienia, aby uzyskać dostęp do zablokowanych zasobów, a następnie zwracają je po zakończeniu) są bardziej opisowe. Dlaczego więc semafor …
12 semaphore 

1
Co oznacza „ocet składniowy”
Czytałem przez Groovy in Action, wydanie drugie i w przypisie znalazłem następujący tekst Java wylewa „ocet składniowy” na taki konstrukt, aby zniechęcić programistów do korzystania z niego. Co syntax vinegaroznacza tutaj ten termin ? Nigdy wcześniej nie słyszałem o tym terminie i szukałem w DuckDuckGo i Google, ale nie mogłem …
12 java  syntax  groovy 

5
Czy przydaje się mini-refaktoryzacja kodu w nadziei na poprawę jakości, czy jest to po prostu „przenoszenie kodu” bez większych korzyści?
Przykład Natknąłem się na monolityczny kod, który robi „wszystko” w jednym miejscu - ładuje dane z bazy danych, pokazuje znaczniki HTML, działa jak router / kontroler / akcja. Zacząłem stosować SRP przenoszący kod bazy danych do własnego pliku, zapewniając lepsze nazewnictwo rzeczy i wszystko wyglądało dobrze, ale potem zacząłem mieć …

5
ile rdzeni powinienem wykorzystać do obliczeń? #cores czy #cores -1?
Mam duże obliczenia do zrobienia. Chociaż mogę wykorzystać wszystkie rdzenie, pomyślałem, że istnieje jakiś powód, aby zrezygnować z 1 rdzenia i go nie wykorzystywać? (procesor obliczeniowy tylko bez IO). Czy też nie doceniam systemu operacyjnego, którego nie wiedziałby, jak obsługiwać i dokonywać właściwego przełączania kontekstu, nawet jeśli wykorzystam wszystkie rdzenie?


2
Jak testować i testować implementacje mutex
Jak mówi tytuł: Jak właściwie testować i porównywać różne implementacje muteksów w c ++? Zasadniczo napisałem własną klasę podobną do std :: mutex dla projektu działającego na 2 rdzeniach, armv7, w celu zminimalizowania kosztów ogólnych w niekwestionowanym przypadku. Teraz rozważam użycie wspomnianego muteksu w większej liczbie miejsc i różnych architektur, …
12 c++  testing  mutex 

2
Czy system plików „widzi” urządzenie pamięci jako (bardzo dużą) tablicę bajtów?
Chcę wiedzieć, w jaki sposób system plików zapisuje i odczytuje dane z urządzenia pamięci masowej. Myślę, że tak to działa: System plików nie ma bezpośredniego dostępu do urządzenia pamięci, ale urządzenie pamięci jest prezentowane (przez sterownik urządzenia pamięci) w systemie plików jako (bardzo duża) tablica bajtów. Na przykład, jeśli system …

2
Czy kompilatory takie jak Javac automatycznie wykrywają czyste funkcje i je równolegle?
Wiadomo, że czyste funkcje ułatwiają parellelizację. Co takiego jest w programowaniu funkcjonalnym, które sprawia, że ​​jest ono z natury przystosowane do wykonywania równoległego? Czy kompilatory takie jak Javac są wystarczająco inteligentne, aby wykryć, kiedy metoda jest czystą funkcją? Zawsze można zaimplementować klasy, które implementują funkcjonalne interfejsy, takie jak Function , …

3
Płaski czy zagnieżdżony JSON dla danych hierarchicznych?
Zmieniałem już ~ 5 razy. Ten punkt końcowy REST /api/tags/będzie do użytku wewnętrznego (bez klientów innych firm), jestem jedynym, który z nim pracuje. Decyduję między tymi dwoma reprezentacjami: Mieszkanie { "types":[ { "id":1, "text":"Utility" }, { "id":7, "text":"Lease Terms" }, ], "tags":[ { "id":8, "text":"Water", "type":1 }, { "id":9, "text":"Electricity", …
12 rest  api-design  json 

4
Czy podczas programowania w stylu funkcjonalnym masz stan pojedynczej aplikacji, który splatasz z logiką aplikacji?
Jak zbudować system, który ma wszystkie następujące elementy : Używanie czystych funkcji z niezmiennymi obiektami. Przekaż tylko dane funkcji, których potrzebuje, nie więcej (tj. Nie ma dużego obiektu stanu aplikacji) Unikaj posiadania zbyt wielu argumentów do funkcji. Unikaj konstruowania nowych obiektów tylko w celu pakowania i rozpakowywania parametrów do funkcji, …

5
Jak można zastosować Agile do aplikacji wymagających złożonego przetwarzania?
Większość literatury na temat zwinności wydaje się być stronnicza w stosunku do aplikacji biznesowych typu CRUD, w których użytkownik jest prawie świadomy tego, co dzieje się za kulisami. (W porządku, ponieważ większość pisanego kodu prawdopodobnie należy do tej klasy). W przypadku tego typu aplikacji związek między historiami użytkowników (wymaganiami) a …

2
Jak faktycznie dowiedzieć się, co należy zrobić w projektowaniu obiektowym?
Najpierw zastrzeżenie: Naprawdę nie wiem, czy to pytanie pasuje do tej witryny, ale nadal uważam to za istotne pytanie nie tylko dla mnie, ale dla innych osób, które są początkujące. Jeśli pytanie można poprawić, aby pasowało tutaj, proszę zaznaczyć int komentarze. Jeśli to nie pasuje, daj mi również znać, a …

1
Udostępnianie części monorepo
Obecnie mamy złożony i nieefektywny system kompilacji składający się z wielu repozytoriów SVN i Git (po około 50%), w tym repozytorium podmodułów git. Mamy też domowe skrypty, które lepiej lub mniej dobrze zarządzają całym procesem. Głównym punktem naszej bazy kodu (zamkniętego źródła) jest to, że jest ściśle powiązana, a każdy …

4
Czy błędem jest używanie flag do wyliczania „grupowania”?
Rozumiem, że [Flag]wyliczenia są zwykle używane do rzeczy, które można łączyć, w których poszczególne wartości nie wykluczają się wzajemnie . Na przykład: [Flags] public enum SomeAttributes { Foo = 1 << 0, Bar = 1 << 1, Baz = 1 << 2, } Jeżeli jakakolwiek SomeAttributeswartość może być kombinacją Foo, …
12 c#  .net  readability  enum 


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.