Ogólny projekt i opis systemu oprogramowania. Projekt architektoniczny przedstawia szczegóły implementacji, algorytmów i reprezentacji danych, aby skoncentrować się na interakcji komponentów „czarnej skrzynki”.
Załóżmy, że zapytano Cię w wywiadzie „Jak wdrożyłbyś wyszukiwarkę Google?” Jak odpowiedziałbyś na takie pytanie? Mogą istnieć zasoby, które wyjaśniają, w jaki sposób niektóre elementy w Google są implementowane (BigTable, MapReduce, PageRank, ...), ale to nie pasuje do wywiadu. Jakiej ogólnej architektury byś użył i jak wyjaśniłbyś to w 15-30 …
Clean Architektura sugeruje niech przypadek użycia interaktora nazwać rzeczywistą realizację prezenter (który jest wtryskiwany w następstwie DIP), aby obsłużyć odpowiedzi / wyświetlacz. Widzę jednak osoby wdrażające tę architekturę, zwracające dane wyjściowe z interactor, a następnie pozwól kontrolerowi (w warstwie adaptera) zdecydować, jak sobie z tym poradzić. Czy drugie rozwiązanie wycieka …
W nieagresywnym zespole programistycznym główny programista ogólnie : Ustawia standard (kodowanie i inne) Zespół bada nowe technologie Ustawia kierunek techniczny dla zespołu Ma ostatnie słowo w sprawach Projektuje architekturę systemu Jednak zwinny zespół działa inaczej: Zwinny zespół będzie polegał na nowatorskim designie, a nie z góry Zwinny zespół projektuje razem, …
Jestem młodszym programistą (ok. 3 lata) i przy mojej pracy opracowujemy nowy system. Mój główny programista będzie głównym architektem, jednak rzucił mi wyzwanie, abym sam spróbował zaprojektować system (równolegle). W trakcie kilku iteracji pomysłów na burzę mózgów i proponowania tego, co widziałem jako sugestie dotyczące architektury, mój trop dał mi …
Ostatnio natrafiłem na pozornie trywialny problem architektoniczny. Miałem proste repozytorium w moim kodzie, które zostało tak nazwane (kod jest w C #): var user = /* create user somehow */; _userRepository.Add(user); /* do some other stuff*/ _userRepository.SaveChanges(); SaveChanges był prostym opakowaniem, które zatwierdza zmiany w bazie danych: void SaveChanges() { …
Pracuję nad zaprojektowaniem interfejsu API RESTful. Wiemy, że chcemy zwrócić JSON i XML dla dowolnego zasobu. Myślałem, że zrobimy coś takiego: GET /api/something?param1=value1 Accept: application/xml (or application/json) Jednak ktoś rzucił do tego celu rozszerzenia, na przykład: GET /api/something.xml?parm1=value1 (or /api/something.json?param1=value1) Jakie są kompromisy z tymi podejściami? Czy najlepiej jest polegać …
Od prawie 2 lat pracuję w dużej firmie (ponad 8000 pracowników) i zostałem zatrudniony zaraz po ukończeniu studiów. Każdy tutaj musi codziennie radzić sobie ze starszym kodem, który często jest bardzo źle zaprojektowany i pełen hacków. Na początku utrzymywałem niski profil, starając się nie krytykować zbyt wiele rzeczy. Jednak obecna …
Badam wzorce architektoniczne dla opracowywanej przeze mnie aplikacji, a podejście oparte na mikrousługach wydaje się być dobrym wyborem, ale nie jestem pewien, jak poradzić sobie z interakcjami między usługami. Aplikacja zajmuje się przede wszystkim użytkownikami, profilami użytkowników, zdjęciami i tagami reprezentującymi jeden lub wiele profili na zdjęciu. Możliwe są metody …
Budując nietrywialną aplikację, najlepiej skupić się na szybkim działaniu i na skrótach w kodzie, takich jak mieszanie logiki modelu z widokami, łamanie enkapsulacji - typowy zapach kodu? Lub, czy lepiej jest poświęcić czas na zbudowanie większej architektury, zbudować ją poprawnie, ale ryzykując, że cały ten dodatkowy kod może nie zostać …
Pracuję w projekcie wykorzystującym (Spring) Dependency Injection do dosłownie wszystkiego, co jest zależnością klasy. Jesteśmy w punkcie, w którym plik konfiguracyjny Spring urósł do około 4000 linii. Niedawno obejrzałem jedną z przemówień wuja Boba na YouTube (niestety nie mogłem znaleźć linku), w których zaleca wstrzyknięcie tylko kilku głównych zależności (np. …
W większości przypadków przechowuję konfigurację aplikacji programistycznych w katalogu głównym projektu, w następujący sposób: app |-- config.json Ale to nie wydaje się być najlepszym podejściem, ponieważ ta konfiguracja ostatecznie jest przechowywana w systemie kontroli wersji - prawdopodobnie skutkując wyciekiem nazw użytkowników, haseł i innych wrażliwych rzeczy. 12 Przewodnik po aplikacji …
Zgodnie z dokumentacją Microsoft, artykułem Wikipedia SOLID lub większością architektów IT musimy upewnić się, że każda klasa ma tylko jedną odpowiedzialność. Chciałbym wiedzieć, dlaczego, ponieważ jeśli wszyscy wydają się zgadzać z tą zasadą, nikt nie wydaje się zgadzać co do przyczyn tej reguły. Niektórzy wskazują na lepszą konserwację, inni twierdzą, …
Kiedyś tworzyłem wiele abstrakcyjnych klas / metod. Potem zacząłem używać interfejsów. Teraz nie jestem pewien, czy interfejsy nie powodują, że klasy abstrakcyjne stają się przestarzałe. Potrzebujesz w pełni abstrakcyjnej klasy? Zamiast tego utwórz interfejs. Potrzebujesz abstrakcyjnej klasy z pewną implementacją? Utwórz interfejs, stwórz klasę. Dziedzicz klasę, zaimplementuj interfejs. Dodatkową korzyścią …
W sieci jest mnóstwo zasobów odnoszących się do zapachów kodu i wyświetlających je na liście. Jednak nigdy nie widziałem informacji o zapachach architektonicznych . Czy jest to gdzieś zdefiniowane i czy jest dostępna lista? Czy przeprowadzono formalne badania defektów architektury i ich wpływu na szybkość projektu, defekty i tym podobne? …
Wiele, wiele księżyców temu, zrobiłem moich mistrzów w inżynierii oprogramowania obiektowego. Omówiłem wszystko: inicjację projektu, wymagania, analizy, projektowanie, architekturę, rozwój itp. Itp. Moją ulubioną książką informatyczną wszechczasów było tworzenie oprogramowania obiektowego, podejście oparte na doświadczeniu (IBM-1996). Książka stworzona przez grupę prawdziwych ekspertów swoich czasów. Opisuje podejście zorientowane na produkt pracy …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.