Ingegneria software

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




2
Perché la classe base deve avere un distruttore virtuale qui se la classe derivata non alloca memoria dinamica grezza?
Il codice seguente provoca una perdita di memoria: #include <iostream> #include <memory> #include <vector> using namespace std; class base { void virtual initialize_vector() = 0; }; class derived : public base { private: vector<int> vec; public: derived() { initialize_vector(); } void initialize_vector() { for (int i = 0; i < …

6
DDD incontra OOP: come implementare un repository orientato agli oggetti?
Un'implementazione tipica di un repository DDD non sembra molto OO, ad esempio un save()metodo: package com.example.domain; public class Product { /* public attributes for brevity */ public String name; public Double price; } public interface ProductRepo { void save(Product product); } Parte dell'infrastruttura: package com.example.infrastructure; // imports... public class JdbcProductRepo …


1
Usare le classi di amici per incapsulare le funzioni dei membri privati ​​in C ++ - buone pratiche o abusi?
Quindi ho notato che è possibile evitare di inserire funzioni private nelle intestazioni facendo qualcosa del genere: // In file pred_list.h: class PredicateList { int somePrivateField; friend class PredicateList_HelperFunctions; public: bool match(); } // In file pred_list.cpp: class PredicateList_HelperFunctions { static bool fullMatch(PredicateList& p) { return p.somePrivateField == 5; // …




5
Ha senso definire un'interfaccia se ho già una classe astratta?
Ho un corso con alcune funzionalità predefinite / condivise. Io lo uso abstract classper questo: public interface ITypeNameMapper { string Map(TypeDefinition typeDefinition); } public abstract class TypeNameMapper : ITypeNameMapper { public virtual string Map(TypeDefinition typeDefinition) { if (typeDefinition is ClassDefinition classDefinition) { return Map(classDefinition); } ... throw new ArgumentOutOfRangeException(nameof(typeDefinition)); } …

4
struct con valore predefinito privo di senso
Nel mio sistema ho spesso operare con codici aeroportuali ( "YYZ", "LAX", "SFO", etc.), sono sempre nello stesso identico formato (3 lettera, rappresentato in maiuscolo). Il sistema in genere gestisce 25-50 di questi (diversi) codici per richiesta API, con oltre un migliaio di allocazioni totali, vengono passati attraverso molti livelli …




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.