Inżynieria oprogramowania

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

4
Co robią projektanci języków, aby zdecydować lub udowodnić, że dana funkcja działa poprawnie?
Interesuję się projektowaniem języka i ogólnie mogę łatwo zrozumieć powszechnie znane cechy (np. Dziedziczenie, polimorfizm, delegaci, lambdy, przechwytywanie, wyrzucanie elementów bezużytecznych, wyjątki, generyczne, wariancje, refleksje itd.), Ich interakcje w konkretny język, sposoby ich ewentualnej implementacji, ich ograniczenia itp. W ciągu ostatnich kilku miesięcy zacząłem czytać o Rustie, który ma system …

3
Dlaczego język powinien preferować wcięcia zamiast wyraźnych znaczników bloków?
Uczę się Haskell i szukałem narzędzia do automatycznego wcięcia. Nie wyglądałem dużo i nauczyłem się, że w Haskell (jak w Pythonie) wcięcie oznacza blok. W rezultacie zgaduję, że niemożliwe jest stworzenie narzędzia do automatycznego formatowania, tak silnego jak w innych językach z rodziny C, które używają wyraźnych znaczników, takich jak …

2
język z dwoma operatorami binarnymi o tym samym priorytecie, lewostronny i prawostronny
Czy istnieje programowania (lub skrypty) język (lub jakiś specyficzny język domeny) o dwóch operatorów binarnych opli oprod samego pierwszeństwa przy oplczym lewy asocjacyjne i oprbycia prawym asocjacyjne? (Nie mogę znaleźć takiego przykładu, ale próbuję napisać parser na tyle ogólny, aby poradził sobie z tym dziwnym przypadkiem) Jak parsowane byłyby wyrażenia …


1
Enum o wielu właściwościach boolowskich
Obecnie pracuję nad aplikacją internetową, w której często musimy uwarunkować logikę serwera na podstawie strony, która zostanie zwrócona użytkownikowi. Każda strona otrzymuje 4-literowy kod strony, a te kody stron są obecnie wymienione w klasie jako ciągi statyczne: public class PageCodes { public static final String FOFP = "FOFP"; public static …
11 java  design  enum 

1
Algorytm do generowania krawędzi i wierzchołków na zewnątrz od początku z maksymalną wielokrotnością 3
Tworzę grę 2D na stronę internetową, na której wszechświat może stać się bardzo duży (w zasadzie nieskończenie duży). Początkowo wszechświat składa się z 6 gwiazd, które są w równej odległości od początku (0, 0). Moim zadaniem jest generowanie większej liczby gwiazd, które będą miały „ścieżki” (krawędzie), które się ze sobą …

1
Przeprowadź migrację starszych wymagań do BDD
P: Jaki jest najlepszy sposób na przeniesienie dużej firmy do firmy Cucumber z co najmniej 15-letnimi wymaganiami dotyczącymi oprogramowania starszego typu przechowywanymi w bazie danych wymagań? Obecnie rozważa: 1) Migruj wszystko Wada: nie mamy nieograniczonego czasu / budżetu, musimy iść naprzód, aby przetrwać, nie możemy zatrzymać wszystkiego i GC 100% …
11 bdd  cucumber 


3
Jak korzystać z pisania kaczego w javascript bez zawsze sprawdzania właściwości i metod?
Wiem, że javascript używa pisania kaczego i na początku myślałem, że to ułatwi polimorfizm w porównaniu do silnie pisanych języków, takich jak C #. Ale teraz moje funkcje pobierające argumenty są zaśmiecone takimi rzeczami: if(myObj.hasSomeProperty()) lub if(myObj.hasSomeMethod()) lub if(isNumber(myParam)) itp. To jest dla mnie naprawdę brzydkie. Pochodzę z tła C …

5
Najlepsza strategia raportowania postępu do interfejsu użytkownika - jak powinno nastąpić oddzwanianie?
Czasami użytkownik rozpoczyna rozszerzoną operację techniczną, której wykonanie zajmuje trochę czasu. W takich przypadkach zazwyczaj miło jest wyświetlić pasek postępu wraz z informacją o tym, które zadanie jest aktualnie wykonywane. Aby uniknąć ścisłego powiązania interfejsu użytkownika i warstw logicznych, zwykle najlepiej jest, aby komunikacja odbywała się za pośrednictwem pewnego rodzaju …

4
Ruby: if variable vs if variable.nil?
Jestem nowy w Ruby i byłem zaskoczony, gdy dowiedziałem się, że wszystkie przedmioty są prawdziwe oprócz zera i fałszu. Nawet 0 jest prawdą. Zaletą tej właściwości języka jest to, że możesz pisać: if !variable # do stuff when variable is nil end Moi koledzy, którzy są bardziej doświadczonymi programistami Ruby, …


3
Czy listy połączone powinny zawsze mieć wskaźnik ogona?
Moje zrozumienie... Zalety: Wstawianie na końcu to O (1) zamiast O (N). Jeśli lista jest listą podwójnie połączoną, usunięcie z końca również oznacza O (1) zamiast O (N). Niekorzyść: Zajmuje trywialną ilość dodatkowej pamięci: 4-8 bajtów . Osoba wdrażająca musi śledzić ogon. Patrząc na te zalety i wady, nie rozumiem, …

7
Kiedy używać ogólnych w projektowaniu interfejsu
Mam pewne interfejsy, które zamierzam wdrożyć w przyszłości przez strony trzecie, i sam zapewniam podstawowe wdrożenie. Będę używał tylko kilku, aby pokazać przykład. Obecnie są one zdefiniowane jako Pozycja: public interface Item { String getId(); String getName(); } ItemStack: public interface ItemStackFactory { ItemStack createItemStack(Item item, int quantity); } ItemStackContainer: …
11 java  generics 

3
Foreach i inicjalizacja zmiennej
Czy istnieje różnica między tymi dwiema wersjami kodu? foreach (var thing in things) { int i = thing.number; // code using 'i' // pay no attention to the uselessness of 'i' } int i; foreach (var thing in things) { i = thing.number; // code using 'i' } Czy to …
11 c#  performance  memory 

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.