Inżynieria oprogramowania

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

2
Jak nazywa się ta technika programowania?
Zetknąłem się z tą techniką programowania podczas wywiadu z programowaniem par i nie mogłem znaleźć jej nazwy w Google. Chodzi o to, że najpierw piszesz wyrażenie, które używa zmiennych, a następnie piszesz kod, który oblicza zmienne później. Aby użyć przykładowego kodu tutaj: private bool ValidPolicyNumber(string policyNumber) { var hasExpectedPrefix = …

1
Domyślne użycie metody Java
Przez dziesięciolecia to było tak, że interfejsy były tylko tylko (tylko) dla określenia podpisy metod. Powiedziano nam, że to „właściwy sposób na robienie rzeczy”. Potem pojawiła się Java 8 i powiedziała: Teraz możesz zdefiniować domyślne metody. Muszę uciekać, pa. Jestem ciekawy, w jaki sposób jest to trawione zarówno przez doświadczonych …

8
„Wolę kompozycję niż dziedziczenie” - Czy to jedyny powód, aby bronić się przed zmianami podpisu?
Ta strona opowiada się za kompozycją za dziedziczeniem za pomocą następującego argumentu (sformułował to w moich słowach): Zmiana podpisu metody nadklasy (która nie została zastąpiona w podklasie) powoduje dodatkowe zmiany w wielu miejscach, gdy używamy dziedziczenia. Jednak gdy korzystamy ze składu, wymagana dodatkowa zmiana występuje tylko w jednym miejscu: podklasie. …

6
Czysty sposób OOP mapowania obiektu na jego prezentera
Tworzę grę planszową (takich jak szachy) w Javie, gdzie każdy element ma swój własny typ (jak Pawn, Rookitd.). Do części GUI aplikacji potrzebuję obrazu dla każdego z tych elementów. Ponieważ robienie myśli jak rook.image(); narusza separację interfejsu użytkownika i logiki biznesowej, utworzę inny prezenter dla każdego elementu, a następnie przypiszę …

4
Jak napisać test dla czystej metody, która nic nie zwraca?
Mam kilka klas, które zajmują się walidacją wartości. Na przykład RangeValidatorklasa sprawdza, czy wartość mieści się w określonym zakresie. Każda klasa walidatora zawiera dwie metody: is_valid(value)która zwraca wartość Truelub Falsezależy od niej i ensure_valid(value)która sprawdza określoną wartość i albo nie robi nic, jeśli wartość jest poprawna, albo zgłasza określony wyjątek, …

8
Zespół Scrumowy nie przestrzega zasady YAGNI
Na spotkaniu SCRUM zespół ds. Produktu debatował na temat funkcji interfejsu API, która zostanie wykorzystana przez aplikację mobilną. Mieliśmy makietę pokazującą, jak powinien wyglądać ekran i jakie kluczowe elementy powinien on zawierać („układ”). Na podstawie tego i dyskusji, którą przeprowadziłem z właścicielem produktu, stworzyłem prototyp odpowiedzi API (HAL + JSON). …

2
Czy są jakieś systemy kompilacji uwzględniające w harmonogramie względne oczekiwane czasy zadań?
Oto mała ilustracja mojego pytania: Załóżmy zadanie kompilacji, które składa się z 4 niezależnych zadań o nazwie AD. D w sumie trwa dłużej niż AC. System kompilacji, który nie może uwzględnić względnych czasów zadań, może zaplanować takie zadania: --------------------------------------- CPU1: A | C | --------------------------------------- CPU2: B | D | …

4
Duża klasa z jedną odpowiedzialnością
Mam Characterklasę linii 2500, która: Śledzi wewnętrzny stan postaci w grze. Ładuje i utrzymuje ten stan. Obsługuje ~ 30 przychodzących poleceń (zwykle = przekazuje je do Game, ale niektóre polecenia tylko do odczytu są natychmiast reagowane). Odbiera ~ 80 połączeń od Gamepodejmowanych działań i odpowiednich działań innych osób. Wydaje mi …


5
Czy „interfejs statyczny” to dobra praktyka?
Niedawno zauważyłem, że istnieje możliwość posiadania statycznych metod w interfejsach. Podobnie jak w przypadku statycznych pól interfejsu, istnieje ciekawe zachowanie: nie są one dziedziczone. Nie jestem pewien, czy jest to przydatne w rzeczywistych interfejsach, które mają zostać zaimplementowane. Umożliwia to jednak programistom tworzenie interfejsów, które są po prostu kopertami dla …
13 java  java8 


1
Czy metodologię TDD można stosować odgórnie?
Nie jestem pewien, w jaki sposób TDD, metodologia, obsługuje następujący przypadek. Załóżmy, że chcę zaimplementować algorytm scalania w Pythonie. Zaczynam od pisania assert mergesort([]) === [] a test kończy się niepowodzeniem Nazwa Błąd: nazwa „scalanie” nie jest zdefiniowana Następnie dodaję def mergesort(a): return [] i mój test mija. Następnie dodaję …
13 tdd 

3
strategie pakietów i wersji w środowisku wielu repozytoriów
Jesteśmy małą firmą z wieloma zespołami, które zarządzają własnymi repozytoriami git. Jest to platforma internetowa, a artefakty każdego zespołu są rozmieszczane pod koniec dnia do nocnych testów. Staramy się sformalizować proces wokół wersji i pakowania. Każdy zespół ma główną gałąź, w której codziennie się rozwija. Członkowie zespołu ds. Zapewnienia jakości …


4
Jak zachęcić młodszych programistów do udziału w przeglądzie kodu?
Obecnie pracuję jako starszy programista z 3 młodszymi osobami pode mną i wprowadziłem proces sprawdzania kodu, aby pomóc w zarządzaniu jakością kodu wprowadzanego do produkcji. Uważam, że dla nas wszystkich bardzo korzystne jest sprawdzanie siebie nawzajem, jednak po około 5 tygodniach procesu jestem jedynym, który może komentować narzędzie (BitBucket). Myślę, …

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.