用于管理数据库访问的C ++类

时间:2014-11-19 23:31:13

标签: c++ database class

问题更多是问题的最佳方式而不是真正的问题。

背景和我正在做的事情

我有一个必须访问数据库的应用程序。因此,我每次需要访问数据库时都会调用一个类DatabaseManager,例如:{/ p>

DatabaseManager *db = new DatabaseManager;
std::vector<Element> elementVector = db->getAElementsById(id);

对于所有插入,更新或删除请求,您都一样。

最终发生了什么......

...是我的文件已经有1200行,并且每个新功能都在增长。

问题

那么漂亮的人怎么办?

  • 一个标题有几个分割文件? (This告诉他们这不是一个好主意)
  • 在几堂课中分裂班级? databaseManager是一个类,它将是一个废话......
  • 还有其他选择吗? (我不熟悉命名空间的概念,也许是一种方式?)

我还阅读了其他帖子,但没有找到问谷歌或回答我问题的人的好问题。

2 个答案:

答案 0 :(得分:1)

我将数据库模块拆分为多个文件。例如,一个文件处理插入,另一个文件处理提取,第三个处理搜索。

我的实际上更复杂,但实践应该是将代码分成单独的主题文件,最好不超过300 LOC(代码行)。

答案 1 :(得分:0)

我现在选择的解决方案如下(因为我懒得重建新类等等):我在几个cpp文件中拆分了类

// DatabaseManager.h

class DatabaseManager
{

//// Getters - in DatabaseManager_getters.cpp
public:
    // Movies
    Movie getOneMovieById(const int id);
    QList<Movie> getAllMovies(const QString fieldOrder = "title");
    ....

private:
    // Other functions for getters
    Movie hydrateMovie(QSqlQuery &query);

//// Inserts - in DatabaseManager_insert.cpp
public:
    bool insertNewMovie(Movie &movie);
    ....

private:
    bool insertNewTag(Tag &tag);
    ....

//// Updates - in DatabaseManager_update.cpp
public:
    bool updateMovie(Movie &movie);
    ....

//// Delete - in DatabaseManager_delete.cpp
public:
    bool deleteMovie(Movie &movie);

private:
    bool deletePeople(const People &people);

};

显然.cpp文件遵循宣布的内容。我更容易找到函数的位置并维护代码。

另一次,如果跟你提出的建议不相关,我会三思而后行。

再来一次!