Dana jest prosta klasa:
struct Example
{
int execute(int a)
{
const int result = a * a;
std::cout << "result is:" << result;
return result;
}
};
Czy ten kawałek kodu jest zgodny z regułami SOLID? Jeśli nie, to w jaki sposób je narusza i jak należałoby poprawić kod?
Day jest kod:
class DocumentWriter
{
public:
virtual void write(const Document& doc) = 0;
};
class DocumentFileWriter : public DocumentWriterCzy ten kawałek kodu jest zgodny z regułami SOLID? Jeśli nie, to w jaki sposób je narusza i jak należałoby poprawić kod?
{
public:
void write(const Document& doc) override
{
out << doc.header() << "\n" << doc.data() << "\n.\n";
out.flush();
}
// ... szczegóły implementacji są nieistotne
};
class DocumentDatabaseWriter : public DocumentWriter
{
public:
void write(const Document& doc) override
{
db.insertRow(doc.header(), doc.data());
}
void commit()
{
db.commit();
}
// ... szczegóły implementacji są nieistotne
};
void userCode()
{
Document doc;
// ...
DocumentWriter* writer = factory.createWriter();
writer->write(doc);
}
Dany jest kod:
class Document
{
public:
void save(std::string_view fileName)
{
std::ofstream out(fileName);
out << title();
out << "\n";
out << data(); // typ Data poprawnie zachowa swoje dane w tej operacji
out << "\n.\n";
}
std::string title() const;
Data data() const; // typ Data nieistotny dla reszty problemu
void combine(const Data& other)
{
// szczegóły implementacji nie mają znaczenia
}
};
Czy ten kawałek kodu jest zgodny z regułami SOLID? Jeśli nie, to w jaki sposób je narusza (może naruszać więcej niż jedną regułę) i jak należałoby poprawić kod?
Day jest kod:
class Document
{
public:
void print()
{
ColorPrinter p;
// szczegóły implementacji nie mają znaczenia
p.print();
}
std::string title() const;
Data data() const; // typ Data umie się zapisywać
void combine(const Data& other)
{
// szczegóły implementacji nie mają znaczenia
}
};
Czy
ten kawałek kodu jest zgodny z regułami SOLID? Jeśli nie, to w jaki
sposób je narusza (może naruszać więcej niż jedną regułę) i jak
należałoby poprawić kod?