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)
保持私密?
private依赖管理还有很多.
信息隐藏是好的,因为它减少了维护,但如果你把它当作一个数据元组,那么有什么意义呢?
你应该考虑你的类的接口,而不是提供一堆getter/setter,这样任何人都可以操作任何东西,你应该努力定义有意义的方法.
请记住,源代码首先应该是可读的.