Ingegneria software

Domande e risposte per professionisti, accademici e studenti che lavorano nel ciclo di vita dello sviluppo di sistemi


2
Licenza Ghostscript in un prodotto commerciale
Stiamo studiando una prospettiva di utilizzo di Ghostscript in un prodotto commerciale (applicazione desktop Windows). Ho letto di eludere completamente le licenze GS suggerendo semplicemente agli utenti che possono scaricare e installare GS da soli per migliorare la loro esperienza (il software funziona effettivamente anche senza di esso, ma la …
19 licensing 



3
Eccezioni: "cosa è successo" vs "cosa fare"
Usiamo le eccezioni per consentire al consumatore del codice di gestire in modo utile comportamenti imprevisti. Di solito si creano eccezioni attorno allo scenario "cosa è successo" FileNotFound(ad esempio , non siamo riusciti a trovare il file specificato) o ZeroDivisionError(non siamo stati in grado di eseguire 1/0operazioni). Cosa succede se …
19 exceptions 



3
È una cosa ragionevole restituire stream ovunque dovremmo normalmente restituire le raccolte?
Mentre sviluppo la mia API che non è legata ad alcun codice legacy, mi trovo spesso a scrivere metodi che sono puramente flussi di pipeline terminati raccogliendo i risultati. Come questo: ImmutableSet<T> deriveSomethingMeaningfulFromPrivateState() { return myPrivateThingies.stream() .map(this::ownerOfThing) .map(Owner::socialStatus) .filter(SocialStatus::isHeAFineMatey) .collect(MyCustomCollectors.toImmutableSet()); } Ora, la maggior parte dei client di questa classe …





2
Quando usare [Pure] su un costruttore?
Sto imparando i contratti di codice in .NET e sto cercando di capire l'idea di costruttori puri. La documentazione relativa ai contratti di codice afferma: Tutti i metodi chiamati all'interno di un contratto devono essere puri; cioè, non devono aggiornare alcuno stato preesistente. Un metodo puro è autorizzato a modificare …


5
È una buona idea "#define me (* this)"?
Questa macro può essere definita in alcune intestazioni globali, o meglio, come parametro della riga di comando del compilatore: #define me (*this) E qualche esempio di utilizzo: some_header.h: inline void Update() { /* ... */ } main.cpp: #include "some_header.h" class A { public: void SetX(int x) { me.x = x; …
19 c++ 

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.