gpt4 book ai didi

c++ - 我应该在私有(private)项目中使用私有(private)类(class)吗?

转载 作者:太空宇宙 更新时间:2023-11-03 10:20:27 25 4
gpt4 key购买 nike

我正面临着为一个研究项目编写一个相当大的程序,该程序可能只会由我使用,或者也可能由将来可能接管它的少数人使用。关键是 - 它不是商业应用程序,也不会公开提供。我的问题是——在这种情况下,将我所有的类定义为私有(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

} ;

然后有一个类用于一系列作业、模拟数据、涉及的机器以及许多其他内容。关键是,我最终得到了很多类,甚至还有更多的组件。所有这些都将由我自己或少数其他人使用。我可以为所有需要设置或读取的私有(private)组件定义所有私有(private)类,使用 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() ) ;

代替

job_schedule.job_list[i] = job_schedule.job_list[i].Finish_Time + job_schedule.job_list[i].Processing_Time ;

所以我的问题是 - 在这种情况下我是否有充分的理由坚持私有(private)类(class)?或者也许有更优雅的方式来做

job_schedule.job_list[i].set_finish_time( job_schedule.job_list[i].get_ArrivaTime() + job_schedule.job_list[i].get_ProcessingTime() ) ;

同时保持私密性?

最佳答案

private 不仅仅是依赖管理。

信息隐藏很好,因为它减少了维护,但是如果您只是将它视为一个数据元组,那么拥有一个类有什么意义呢?

你应该考虑你的类的接口(interface),而不是提供一堆 getters/setters 以便任何人都可以操纵任何东西,你应该努力定义有意义的方法。

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

关于c++ - 我应该在私有(private)项目中使用私有(private)类(class)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7398910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com