我应该在私人项目中使用私人课程吗?

Puc*_*tek 1 c++ private public

我正面临为一个研究项目编写一个相当大的项目,该项目可能仅由我使用,或者也可能由少数可能在将来接受它的人使用.关键是 - 它不是商业应用程序,也不会公开.而我的问题 - 在这种情况下,真正有任何好的论据背后定义我的所有类私有而不是公开?整个代码意味着作业序列调度程序.所以,例如,我有一个基本的工作类,如下所示:

class Job {

private:    // should it be?
    int Jobid;

    int stack_row ; // horizontal positon in a stack
    int row_height ;    // position in a column of containers

    float ArrivalTime;
    float FinishTime;
    float GantryTime;

    float WaitingTime; // Job Start - Job Arrival
    float ReachableTime; // later time of Vehicle or YC arrival to job location

    float DueDate;
    float Tardiness; // max{0, Ci-di} Ci, Completion time = Finish time; di, DueDate
    float SlackTime;
    int type; // 1, Loading; 2, Unloading

} ;
Run Code Online (Sandbox Code Playgroud)

然后是一系列工作,模拟数据,涉及的机器以及许多其他事情.关键是,我最终得到了很多类,甚至更多的组件.所有这些都将仅由我或少数其他人使用.我可以定义私人所有类,用set_whatever(),get_whatever()对于需要进行设置或读取所有私有组件的功能,但真的一点呢?A - 需要时间.B - 当我写作时,它不能创建一个非常清晰的代码

job_schedule.job_list[i].set_finish_time( job_schedule.job_list[i].get_ArrivaTime() +   job_schedule.job_list[i].get_ProcessingTime() ) ;
Run Code Online (Sandbox Code Playgroud)

代替

job_schedule.job_list[i] = job_schedule.job_list[i].Finish_Time + job_schedule.job_list[i].Processing_Time ;
Run Code Online (Sandbox Code Playgroud)

所以我的问题是 - 在这种情况下我是否真的有理由坚持私人课程?或者也许有更优雅的方式

job_schedule.job_list[i].set_finish_time( job_schedule.job_list[i].get_ArrivaTime() + job_schedule.job_list[i].get_ProcessingTime() ) ;
Run Code Online (Sandbox Code Playgroud)

保持私密?

Mat*_* M. 7

private依赖管理还有很多.

信息隐藏是好的,因为它减少了维护,但如果你把它当作一个数据元组,那么有什么意义呢?

你应该考虑你的类的接口,而不是提供一堆getter/setter,这样任何人都可以操作任何东西,你应该努力定义有意义的方法.

请记住,源代码首先应该是可读的.

  • 建议反对这个getter/setter无意识的+1. (2认同)