Inżynieria oprogramowania

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

6
Czy Dijkstra zamierzał modularyzować kod, pisząc o rozdzieleniu problemów?
Najpierw przeczytałem fragment artykułu Edsgera W. Dijkstry z 1974 r. „O roli myśli naukowej”: Pozwól, że wyjaśnię ci, co według mojego gustu jest charakterystyczne dla każdego inteligentnego myślenia. Chodzi o to, że chce się dogłębnie przestudiować aspekt przedmiotu w oderwaniu dla własnej spójności, cały czas wiedząc, że zajmuje się tylko …


1
Nazwa techniki wnioskowania argumentów typu parametru typu?
Konfiguracja: Załóżmy, że mamy typ o nazwie, Iteratorktóry ma parametr typu Element: interface Iterator<Element> {} Następnie mamy interfejs, Iterablektóry ma jedną metodę, która zwróci Iterator. // T has an upper bound of Iterator interface Iterable<T: Iterator> { getIterator(): T } Problem z Iteratorbyciem ogólnym jest taki, że musimy dostarczyć mu …

6
Jak wdrożyć proces rozwoju ze studentami
Podczas mojej pierwszej pracy jako programista mój zespół używał metodyki agile / scrum do zarządzania przepływem pracy w projekcie i działało to całkiem nieźle. Miałem doświadczonych mentorów, którzy postawili mnie na właściwej drodze - jestem im winien wielki dług wdzięczności. Pracowałem tam przez kilka lat, a kilka miesięcy temu przeszedłem …

2
Szczegółowość wyjątków
Natknąłem się na debatę między kilkoma przyjaciółmi i mną. Wolą ogólne wyjątki, takie jak ClientErrorExceptioni ServerErrorExceptionze szczegółami jako pola wyjątku, podczas gdy ja wolę sprecyzować rzeczy. Na przykład mogę mieć kilka wyjątków, takich jak: BadRequestException AuthenticationFailureException ProductNotFoundException Każdy z nich zbudowany w oparciu o kod błędu zwrócony z interfejsu API. …

3
Anty-wzór
Czytałem w tym poście na temat anty-wzorca for-if i nie jestem pewien, czy rozumiem, dlaczego jest to anty-wzorzec. foreach (string filename in Directory.GetFiles(".")) { if (filename.Equals("desktop.ini", StringComparison.OrdinalIgnoreCase)) { return new StreamReader(filename); } } Pytanie 1: Czy to z powodu return new StreamReader(filename);wewnątrz for loop? lub fakt, że forw tym przypadku …

5
Mikrousługi: MonolithFirst?
Badam architektury mikrousług, próbując uzyskać ogólny przegląd wszystkich zalet i wad, kiedy i dlaczego itp. Wiele informacji, które czytam / oglądam, pochodzi z ThoughtWorks (Martin Fowler, Neal Ford, i in. glin). Większość prac Martina Fowlera na ten temat ma kilka lat, kiedy Microservices (jako nazwa programowa, jeśli nie ogólna praktyka) …

3
Czy istnieje powód, aby nie modyfikować wartości parametrów przekazywanych przez wartość?
Czy istnieją obiektywne, obsługiwane argumenty inżynierii oprogramowania przemawiające za lub przeciw modyfikowaniu wartości parametrów według wartości w treści funkcji? Powtarzający się splot (głównie w dobrej zabawie) w moim zespole polega na tym, czy parametry przekazywane przez wartość powinny być modyfikowane. Kilku członków zespołu jest przekonanych, że nigdy nie należy przypisywać …

6
co może pójść nie tak w kontekście programowania funkcjonalnego, jeśli mój obiekt jest zmienny?
Widzę korzyści wynikające ze stosowania obiektów mutowalnych i niezmiennych, takich jak obiekty niezmienne, które zabierają wiele trudnych do rozwiązania problemów w programowaniu wielowątkowym ze względu na stan współdzielenia i zapisu. Wręcz przeciwnie, zmienne obiekty pomagają radzić sobie z tożsamością obiektu, zamiast tworzyć nowe kopie za każdym razem, a tym samym …


3
Jak zaprojektować metodę TryParse, która zapewnia szczegółowe informacje w przypadku błędu analizy?
Podczas analizowania danych wejściowych od użytkownika ogólnie zaleca się, aby nie zgłaszać wyjątków i wychwytywać wyjątki, ale raczej stosować metody sprawdzania poprawności. W .NET BCL byłaby to różnica między, na przykład int.Parse(zgłasza wyjątek w przypadku nieprawidłowych danych) i int.TryParse(zwraca falsew przypadku nieprawidłowych danych). Projektuję własne Foo.TryParse(string s, out Foo result) …
9 c#  .net  api-design 

5
Podążasz ścieżką tego, co wiem, a następnie spróbuj wdrożyć prawidłowe praktyki kodowania lub zacząć od dobrych praktyk kodowania i próbować kroczyć moją drogą?
Po pierwsze, chcę powiedzieć, że jestem przyzwyczajony do programowania proceduralnego jako hobby - staram się uczyć OOP w kilku językach i rozumiem teorię , a nie praktykę. Mam projekt zwierzaka, który chciałem zbudować, szczególnie w PHP z zapleczem bazy danych (nie obchodziło mnie co). Moim głównym powodem było użycie aplikacji …

4
kontekst otoczenia a wstrzykiwanie konstruktora
Mam wiele podstawowych klas, które wymagają ISessionContext bazy danych, ILogManager dla dziennika i IService używane do komunikacji z innymi usługami. Chcę użyć wstrzykiwania zależności dla tej klasy używanej przez wszystkie podstawowe klasy. Mam dwie możliwe implementacje. Klasa podstawowa, która akceptuje IAmbientContext ze wszystkimi trzema klasami lub wstrzykuje dla wszystkich klas …


2
Prawidłowy projekt, aby uniknąć użycia dynamic_cast?
Po przeprowadzeniu niektórych badań nie mogę znaleźć prostego przykładu rozwiązującego często spotykany problem. Powiedzmy, że chcę utworzyć małą aplikację, w której mogę tworzyć Squares, Circles i inne kształty, wyświetlać je na ekranie, modyfikować ich właściwości po ich wybraniu, a następnie obliczać wszystkie ich obwody. Zrobiłbym klasę modelu w ten sposób: …

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.