Inżynieria oprogramowania

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

5
Gdzie należy umieścić stałe i dlaczego?
W naszych przeważnie dużych aplikacjach zwykle mamy tylko kilka lokalizacji dla „stałych”: Jedna klasa dla graficznego interfejsu użytkownika i elementów wewnętrznych (tytuły stron tabulatora, tytuły pól grupy, współczynniki obliczeniowe, wyliczenia) Jedna klasa dla tabel i kolumn bazy danych (ta część jest generowana kodem) oraz czytelne nazwy dla nich (przypisane ręcznie) …

3
Czy konwencjonalne jest zgłaszanie błędu NotImplementedError dla metod, których wdrożenie jest w toku, ale nie jest planowane jako abstrakcyjne?
Lubię podnosić NotImplementedErrormetodę, którą chcę wdrożyć, ale tam, gdzie jeszcze się nie udało. Mogę już mieć częściową implementację, ale dodaj ją, raise NotImplementedError()ponieważ jeszcze jej nie lubię. Z drugiej strony lubię też przestrzegać konwencji, ponieważ ułatwi to innym osobom utrzymanie mojego kodu, a konwencje mogą istnieć z dobrych powodów. Jednak …

12
Korzystanie z pirackiego oprogramowania w firmie [zamknięte]
Kilka miesięcy temu zacząłem pracować w firmie jako inżynier. Jest to mała firma, a oni w zasadzie robią usługi telefoniczne. Teraz przechodzą z normalnych telefonów na telefony IP, dzięki czemu komputery zajmują ważniejsze miejsce w pracy. Jednak wszystkie komputery używane przez pracowników są wyposażone w pirackie oprogramowanie, w tym ich …
33 ethics 


6
Dodatkowa linia w bloku vs dodatkowy parametr w Clean Code
Kontekst W Clean Code , strona 35, to mówi Oznacza to, że bloki w instrukcjach if, instrukcjach else, instrukcjach while i tak dalej powinny mieć długość jednego wiersza. Prawdopodobnie ta linia powinna być wywołaniem funkcji. To nie tylko sprawia, że ​​funkcja zamykająca jest mała, ale także dodaje wartość dokumentalną, ponieważ …
33 clean-code  solid 

9
Jak przekonać drogich programistów?
W naszej firmie musimy robić wiele pozornie nieskomplikowanych rzeczy, takich jak tworzenie mobilnego interfejsu użytkownika. Powiedzmy, że doświadczeni programiści kosztują nas 4x tyle, co początkujący. Oba są w zasadzie w stanie wykonać pozornie proste rzeczy w tym samym czasie. Różnica polega na tym, że doświadczeni programiści produkują mniej błędów, a …

6
Jaka jest dobra praktyka bezpieczeństwa przy przechowywaniu krytycznej bazy danych na laptopach programistów?
Mamy kilka danych: Programiści potrzebują repliki produkcyjnej bazy danych na swoich komputerach. Programiści mają hasło do wspomnianej bazy danych w plikach App.config. Nie chcemy, aby dane we wspomnianej bazie danych były zagrożone. Kilka sugerowanych rozwiązań i ich wady: Szyfrowanie całego dysku. To rozwiązuje wszystkie problemy, ale obniża wydajność laptopa, a …

9
W jaki sposób pracownicy kontroli jakości mogą testować logikę buforowania, której nie widzą?
Właśnie zaimplementowałem warstwę pamięci podręcznej w mojej aplikacji internetowej i teraz zastanawiam się, jak QA powinna to przetestować, ponieważ buforowanie jest przezroczyste dla użytkownika. Jednym z moich pomysłów jest wprowadzenie metod wywoływania kodu wypełniającego pamięć podręczną i rejestrowanie, kiedy obiekt jest pobierany z pamięci podręcznej i kiedy wymaga odtworzenia z …
33 testing  caching 

1
raw, poor_ptr, unique_ptr, shared_ptr itp… Jak mądrze je wybrać?
W C ++ jest wiele wskazówek, ale szczerze mówiąc za około 5 lat w programowaniu w C ++ (szczególnie w Qt Framework) używam tylko starego surowego wskaźnika: SomeKindOfObject *someKindOfObject = new SomeKindOfObject(); Wiem, że istnieje wiele innych „inteligentnych” wskaźników: // shared pointer: shared_ptr<SomeKindofObject> Object; // unique pointer: unique_ptr<SomeKindofObject> Object; // …


5
Dlaczego usuwanie jest zwykle o wiele trudniejsze do wdrożenia niż wstawianie do wielu struktur danych?
Czy potrafisz wymyślić jakiś konkretny powód, dla którego usunięcie jest zwykle znacznie trudniejsze do wdrożenia niż wstawienie dla wielu (większości?) Struktur danych? Szybki przykład: listy połączone. Wstawianie jest trywialne, ale usuwanie ma kilka specjalnych przypadków, które znacznie utrudniają. Samowyrównujące się drzewa wyszukiwania binarnego, takie jak AVL i czerwono-czarny, to klasyczne …

4
Scrum - czym zajmują się członkowie zespołu podczas sprintu
Zatem sprint scrumowy to ustalony okres, w którym należy wdrożyć określony zestaw funkcji. Zespół scrum składa się ze wszystkich osób zaangażowanych w dostarczanie tych funkcji, z których większość to zazwyczaj programiści i testerzy. Po ustaleniu tych zasad można się zastanawiać, jak utrzymać tych wszystkich ludzi w trakcie całego sprintu. Na …
33 agile  scrum  sprint 

5
Jak mogę tworzyć i egzekwować umowy dotyczące wyjątków?
Staram się przekonać mój zespół, aby zezwalał na stosowanie wyjątków w C ++ zamiast zwracania wartości bool isSuccessfullub wyliczenia z kodem błędu. Nie mogę jednak odeprzeć jego krytyki. Rozważ tę bibliotekę: class OpenFileException() : public std::runtime_error { } void B(); void C(); /** Does blah and blah. */ void B() …
33 c++  exceptions 


8
Czy zgłaszanie wyjątku jest tu anty-wzorem?
Właśnie omówiłem wybór projektu po przejrzeniu kodu. Zastanawiam się, jakie są twoje opinie. Jest ta Preferencesklasa, która jest wiadrem dla par klucz-wartość. Wartości zerowe są legalne (to ważne). Oczekujemy, że niektóre wartości mogą jeszcze nie zostać zapisane i chcemy automatycznie obsługiwać te przypadki, inicjując je z predefiniowaną wartością domyślną na …

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.