Inżynieria oprogramowania

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

2
Właściwość nazewnictwa reprezentująca ciąg rozpoczynający się od liczby
Patrząc na niektóre metadane aparatu w systemie Windows, File Propertiesistnieją (wraz z kilkoma innymi) dwie o Propertiesnazwie Ogniskowa i ogniskowa 35 mm . Tworzę oprogramowanie, które wykorzysta te dwa Properties. Do tej pory stworzyłem Propertynazwę FocalLengthdla pierwszego, ale nie mogę znaleźć właściwej nazwy dla drugiego. Myślałem o _35MmFocalLengthczy ThirtyFiveMmFocalLength, ale …


5
Projektujesz solidną architekturę dla wielu typów eksportu?
Szukam wzorów lub wskazówek architektonicznych dla nadchodzącej funkcji, którą projektuję. Zasadniczo jest to funkcja eksportu z wieloma celami eksportu i szukam sposobu, aby uczynić ją wystarczająco ogólną, w której podłączanie nowych celów eksportu nie wymaga wielu podstawowych zmian. Podając cele eksportu, po prostu odnoszę się do różnych typów danych wyjściowych, …

2
Dlaczego odradza się stosowanie konstruktorów podczas tworzenia prototypów?
Szybkie tło: W JavaScript funkcja konstruktora dla każdego typu obiektu ma prototypewłaściwość. prototypeOdnosi się do obiektu, co wykonane zastosowania obiektu jako Następnym krokiem w łańcuchu prototypu. Jeśli chcesz, aby jeden typ był nieodłączny od innego typu, możesz ustawić prototypetyp podrzędny na nową instancję typu nadrzędnego. Na przykład: var Parent = …

1
Konieczność nauki rozszerzenia języka haskell do produkcji
Podstawowy język Haskell jest naprawdę prosty. Pochodząc z tła OO, główną trudnością jest dostosowanie się do czysto funkcjonalnego paradygmatu. Ucząc się „podstawowego” języka Haskell, zawsze brałem pod uwagę rozszerzenia językowe jako zabawki dla osób CS lub eksperymenty dla przyszłych wersji języka (jak from future import ???w Pythonie). Jednak kiedy zacząłem …
10 haskell 

5
Skuteczne spotkania zespołu
Jestem liderem zespołu złożonego z 8 programistów w firmie złożonej z około 20 osób technicznych. Pracują nad wieloma projektami, w projekty te zaangażowane są także osoby z innych zespołów, które są poza moją kontrolą. Moja organizacja nie rozwija odpowiednio sprawnego rozwoju i są w pewnym stopniu odporne na zmiany, ale …

2
Który kod jest lepszy do optymalizacji przewidywania gałęzi?
Biorąc pod uwagę przewidywania gałęzi, a także efekt optymalizacji kompilatora, który kod oferuje lepszą wydajność? Zauważ, że bRareExceptionPresent stanowi rzadki warunek. To nie jest normalna ścieżka logiki. /* MOST COMMON path must branch around IF clause */ bool SomeFunction(bool bRareExceptionPresent) { // abort before function if(bRareExceptionPresent) { return false; } …

2
Czy moja biblioteka zadań asynchronicznych powinna cicho połykać wyjątki?
Właśnie dowiedziałem się, że .NET 4.5 wprowadził zmianę w sposobie obsługi wyjątków wewnątrz Task. Mianowicie są cicho tłumione. Oficjalne uzasadnienie, dlaczego tak się stało, brzmi: „chcieliśmy być bardziej przyjaźni dla niedoświadczonych programistów”: W .NET 4.5 zadania mają znacznie większe znaczenie niż w .NET 4, ponieważ są one wprowadzone w językach …
10 .net 

3
Poprawki Open Source, praw autorskich i trywialne
Powiedzmy, że programista opracował bibliotekę dla swojej komercyjnej aplikacji o zamkniętych źródłach. Ponieważ chcą zwrócić się społeczności open source, publikują tę bibliotekę, powiedzmy, na licencji GPL, ale nadal używają jej we własnej aplikacji. Ponieważ są właścicielami praw autorskich, w porządku. Teraz użytkownik wersji GPL znajduje błąd, naprawia go i przesyła …

3
Pisanie kompilatora kompilatora - wgląd w użytkowanie i funkcje
Jest to część serii pytań, które koncentrują się na siostrzanym projekcie Abstraction Project, którego celem jest wyodrębnienie pojęć używanych w projektowaniu języka w formie ram. Projekt siostrzany nazywa się OILexer, który ma na celu skonstruowanie analizatora składni z plików gramatycznych, bez użycia wstrzykiwania kodu do dopasowań. Niektóre inne strony związane …

3
Co by pomogło przy refaktoryzacji dużej metody, aby upewnić się, że nic nie zepsuję?
Obecnie refaktoryzuję część dużej bazy kodu bez żadnych testów jednostkowych. Próbowałem zmienić kod na brutalny, tzn. Próbując odgadnąć, co robi kod i jakie zmiany nie zmieniłyby jego znaczenia, ale bez powodzenia: losowo psuje funkcje w całej bazie kodu. Należy pamiętać, że refaktoryzacja obejmuje przeniesienie starszego kodu C # do bardziej …

4
Dlaczego w testowaniu jednostkowym miałbym dwa razy tworzyć repozytorium?
Innego dnia czytałem trochę o Testowaniu Jednostek i widziałem kilka przykładów, w których ludzie tworzą interfejs repozytorium (tj. IExampleRepository), A następnie tworzą prawdziwe repozytorium ( public class ExampleRepository : IExampleRepository) i repozytorium, które będzie używane do testowania jednostek ( FakeExampleRepository : IExampleRepository). W IExampleRepositoryimplementacji stosowano te same metody, co w …

1
Najlepsza praktyka obsługi asynchronicznej komunikacji między urządzeniami?
Niedawno zakończyłem projekt obsługi przetwarzania kart kredytowych. Jedną z trudności, z którymi się spotkałem, była obsługa opóźnień / możliwych awarii powiadomień. Najbardziej złożonym przykładem było: zewnętrzny system wysyłający żądanie zapłaty mój system przekształca to żądanie w żądanie do bramki płatności wysyłanie użytkownika do bramy oczekiwanie na dokonanie płatności przez użytkownika …

2
Co zrobić, gdy klient prosi o coś nieuzasadnionego (z mojego punktu widzenia)
Jestem niezależnym programistą i niedawno ukończyłem witrynę, wszystko działa dobrze, ale był jeden użytkownik, który skarżył się mojemu klientowi, że nie może się zalogować. Ten problem był wyraźnie ograniczeniem plików cookie / starej przeglądarki (nie mogłem sam nie stwórzę problemu, a rzesze użytkowników dobrze współpracują z witryną) Teraz mój klient …

3
Jak wdrożyć leniwą ocenę if ()
Obecnie implementuję ewaluator wyrażeń (wyrażenia jednowierszowe, takie jak formuły) w oparciu o: wprowadzone wyrażenie jest tokenizowane w celu oddzielenia literalnych boolanów, liczb całkowitych, dziesiętnych, ciągów, funkcji, identyfikatorów (zmiennych) Zaimplementowałem algorytm Shunting-yard (lekko zmodyfikowany do obsługi funkcji o zmiennej liczbie argumentów), aby pozbyć się nawiasów i uporządkować operatorów z przyzwoitym pierwszeństwem …

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.