Inżynieria oprogramowania

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

10
Osiągnięcie statusu programowania pośredniego [zamknięte]
Jestem inżynierem oprogramowania, który zajmuje się programowaniem pozycji w VBA (chociaż nie śmiem uważać tego za „prawdziwe” doświadczenie, ponieważ było to metodą prób i błędów!), Perl w / CGI, C # i ASP.NET. Te dwa ostatnie są po studiach licencjackich, z moim wejściem do „prawdziwego świata”. Jestem 2 lata po …

1
Dlaczego kursor został użyty do XOR zamiast potęgowania?
Nie znaczy to, że tak naprawdę jest to problem dla każdego, kto zmagał się z tym problemem składniowym, ale widzę ogromną dozę zamieszania wynikającą z użycia funkcji caret ( ^) jako operacji XOR zamiast powszechnie akceptowanej operacji matematycznego potęgowania. Oczywiście istnieje wiele miejsc, w których (niewłaściwe) użycie karetki jest wyjaśnione …

5
Zezwól na iterację wektora wewnętrznego bez wycierania implementacji
Mam klasę reprezentującą listę osób. class AddressBook { public: AddressBook(); private: std::vector<People> people; } Chcę pozwolić klientom na iterację po wektorze ludzi. Pierwszą myślą, którą miałem, było po prostu: std::vector<People> & getPeople { return people; } Nie chcę jednak ujawniać klientowi szczegółów implementacji . Mogę chcieć zachować pewne niezmienniki, gdy …
32 c++ 

10
Używanie identyfikatora GUID jako klucza podstawowego
Generalnie używam identyfikatorów automatycznego przyrostu jako kluczy podstawowych w bazach danych. Próbuję poznać zalety korzystania z GUID. Przeczytałem ten artykuł: https://betterexplained.com/articles/the-quick-guide-to-guids/ Zdaję sobie sprawę, że te identyfikatory GUID są używane do identyfikacji obiektów na poziomie aplikacji. Czy są one również przechowywane jako klucz podstawowy na poziomie bazy danych. Powiedzmy, że …

2
Wybór odpowiedniego wzoru
Zawsze zdawałem sobie sprawę ze znaczenia stosowania wzorców projektowych. Jestem ciekawy, jak inni programiści wybierają ten najbardziej odpowiedni. Czy korzystasz z szeregu cech (takich jak schemat blokowy), aby pomóc Ci podjąć decyzję? Na przykład: Jeśli obiekty są powiązane, ale nie chcemy określać konkretnej klasy, rozważ opcję Streszczenie Kiedy tworzenie instancji …


3
Jak reprezentować (wyliczać) typy w publicznym interfejsie API
Pracuję nad prostym interfejsem API, którego chcę używać dla własnego klienta i aby był otwarty dla publiczności w przyszłości. Mam obiekty „Przedmiot”, które mogą mieć różne „typy”. Typ jest „enum typedef C”, na razie mam: typedef enum { ItemTypeBool, ItemTypeNumber, ItemTypeDate, } ItemType; (Mogę dodać trochę w przyszłości) Zastanawiam się, …


5
Dlaczego C # i Java używają równości odniesienia jako wartości domyślnej dla „==”?
Zastanawiałem się przez jakiś czas, dlaczego Java i C # (i jestem pewien, że inne języki) domyślnie odnoszą się do równości ==. W programowaniu, które wykonuję (co z pewnością jest tylko niewielkim podzbiorem problemów programistycznych), prawie zawsze chcę logicznej równości podczas porównywania obiektów zamiast równości odniesienia. Próbowałem wymyślić, dlaczego oba …


4
Abstrakcyjny typ danych i struktura danych
Bardzo trudno jest mi zrozumieć te warunki. Szukałem w Google i czytałem trochę na Wikipedii, ale nadal nie jestem pewien. Do tej pory ustaliłem, że: Abstrakcyjny typ danych to definicja nowego typu, opisująca jego właściwości i działanie. Struktura danych jest implementacją ADT. Wiele ADT może być zaimplementowanych jako ta sama …

7
Programowanie funkcjonalne w porównaniu do OOP z klasami
Ostatnio interesowałem się niektórymi koncepcjami programowania funkcjonalnego. Od jakiegoś czasu korzystam z OOP. Widzę, jak zbudowałbym dość złożoną aplikację w OOP. Każdy obiekt wiedziałby, jak to robić. Lub cokolwiek, co robi klasa rodziców. Mogę więc po prostu powiedzieć, Person().speak()żeby ta osoba mówiła. Ale jak zrobić podobne rzeczy w programowaniu funkcjonalnym? …

9
Kiedy refaktoryzować
Przeczytałem większość książek o refaktoryzacji Fowlera i dokonałem refaktoryzacji wielu aplikacji w mojej dużej i małej przeszłości. Jedną z trudniejszych rzeczy, których nauczam, jest „kiedy” refaktoryzować. Zwykle robię to w oparciu o przeczucie, które w przeszłości służyło mi wyjątkowo dobrze. Jednak kiedy wchodzimy w dyskusje z ludźmi na temat tego, …



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.