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”.
Jestem dogłębnie programowany i poznałem języki, w tym BASIC, FORTRAN, COBOL, LISP, LOGO, Java, C ++, C, MATLAB, Mathematica, Python, Ruby, Perl, JavaScript, asembler i tak dalej. Nie rozumiem, jak ludzie tworzą języki programowania i opracowują dla nich kompilatory. Nie mogłem również zrozumieć, w jaki sposób ludzie tworzą systemy operacyjne …
Mój kolega dzisiaj zaangażował klasę o nazwie ThreadLocalFormat, która zasadniczo przeniosła instancje klas formatu Java do lokalnego wątku, ponieważ nie są one bezpieczne dla wątków i „stosunkowo drogie” do utworzenia. Napisałem szybki test i obliczyłem, że mogę stworzyć 200 000 instancji na sekundę, zapytałem go, czy tworzy tyle, na które …
Wydaje się całkiem jasne, że „zasada pojedynczej odpowiedzialności” nie oznacza „tylko jednej rzeczy”. Po to są metody. public Interface CustomerCRUD { public void Create(Customer customer); public Customer Read(int CustomerID); public void Update(Customer customer); public void Delete(int CustomerID); } Bob Martin mówi, że „klasy powinny mieć tylko jeden powód do zmiany”. …
Procesory Intel (i może niektóre inne) używają małego formatu Endian do przechowywania. Zawsze zastanawiam się, dlaczego ktoś chciałby przechowywać bajty w odwrotnej kolejności. Czy ten format ma jakieś zalety w porównaniu z formatem big endian?
Szukam rekomendacji tutaj. Mam problem z tym, czy lepiej zwrócić NULL, czy pustą wartość z metody, gdy zwracana wartość nie jest obecna lub nie można jej ustalić. Jako przykład weź następujące dwie metody: string ReverseString(string stringToReverse) // takes a string and reverses it. Person FindPerson(int personID) // finds a Person …
Zawsze podobał mi się pomysł obsługiwania wielokrotnego dziedziczenia w jednym języku. Najczęściej jednak jest celowo zapominany, a domniemanym „zamiennikiem” są interfejsy. Interfejsy po prostu nie obejmują tego samego gruntu, co wielokrotne dziedziczenie, a to ograniczenie może czasami prowadzić do większej liczby kodów wzorcowych. Jedynym podstawowym powodem, dla którego kiedykolwiek to …
Wstrzykiwanie zależności (DI) jest dobrze znanym i modnym wzorem. Większość inżynierów zna jego zalety, takie jak: Umożliwienie / łatwość izolacji podczas testów jednostkowych Jawne definiowanie zależności klasy Ułatwienie dobrego projektu ( na przykład zasada pojedynczej odpowiedzialności ) Szybkie włączanie implementacji przełączania ( DbLoggerzamiast ConsoleLoggerna przykład) Uważam, że istnieje ogólna zgoda …
Złożyłem aplikację, którą napisałem do innych architektów w celu przejrzenia kodu. Jeden z nich niemal natychmiast odpisał mi i powiedział: „Nie używaj„ statycznego ”. Nie możesz pisać automatycznych testów za pomocą klas i metod statycznych. Należy unikać„ statycznego ”. Sprawdziłem iw pełni 1/4 moich zajęć jest oznaczonych jako „statyczne”. Używam …
To pytanie dotyczy języka C #, ale spodziewam się, że obejmie inne języki, takie jak Java lub TypeScript. Microsoft zaleca najlepsze praktyki korzystania z wywołań asynchronicznych w .NET. Spośród tych rekomendacji wybierzmy dwa: zmień podpis metod asynchronicznych, tak aby zwracały Zadanie lub Zadanie <> (w TypeScript byłoby to Obietnicą <>) …
Trudno mi znaleźć zasoby na temat tego, dlaczego powinienem używać zastrzyku zależności . Większość zasobów, które widzę, wyjaśnia, że po prostu przekazuje instancję obiektu do innej instancji obiektu, ale dlaczego? Czy to tylko dla czystszej architektury / kodu czy wpływa to na wydajność jako całość? Dlaczego powinienem wykonać następujące czynności? …
W Code Complete strona 25 napisano, że dobrym pomysłem jest możliwość łatwego zastąpienia zwykłych klas interfejsu użytkownika klasą z linii poleceń. Znając jego zalety w testowaniu, co z problemami, jakie może to przynieść? Czy ta dodatkowa praca naprawdę się opłaci w przypadku projektów internetowych i mobilnych? Co z małymi i …
OK, sparafrazowałem. Pełny cytat: Internet został wykonany tak dobrze, że większość ludzi uważa go za zasoby naturalne, takie jak Ocean Spokojny, a nie za coś stworzonego przez człowieka. Kiedy po raz ostatni technologia o takiej skali była tak wolna od błędów? Dla porównania, Internet to żart. Sieć została stworzona przez …
Nadal nie mam doświadczenia w pisaniu kodu o wysokiej jakości, dlatego czytam książki poświęcone temu zagadnieniu, takie jak Clean Code autorstwa Roberta C. Martina, i ciągle sprawdzam kod znanych bibliotek, aby poprawić swoje umiejętności. Chociaż wiele bibliotek open source jest utrzymywanych od lat, co oznacza, że jest bardzo mało prawdopodobne, …
Jednym z głównych problemów, które widziałem w systemie z mikrousługami, jest sposób działania transakcji, gdy obejmują one różne usługi. W ramach naszej własnej architektury korzystamy z transakcji rozproszonych, aby rozwiązać ten problem, ale wiążą się one z własnymi problemami. Szczególnie impasy były jak dotąd bólem. Kolejną opcją wydaje się być …
Znasz to uczucie, kiedy po prostu trzeba pokazać, że nowy trik ze Expressions lub generalizować trzy różne procedury? Nie musi to być w skali Astronauta architektury i faktycznie może być pomocne, ale nie mogę nie zauważyć, że ktoś inny zaimplementowałby tę samą klasę lub pakiet w bardziej przejrzysty, prosty (a …
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.