今天在公司的内部网和同事进行了一场有关public量化接口,接口和友元类的讨论。
我:有时类量化接口,接口要提供给外部类使用,但把它定义为public量化接口,接口并不好,因为我觉得好的设计原则是一个类的public量化接口,接口尽可能少。如果某一量化接口,接口确实需要被外部的类调用。这时我认为把外部使用类声明为量化接口,接口提供类的友元类是一个较好的做法。
同事王:我感觉友元还不如公开量化接口,接口。
我:友元就意味着对局部范围公开。
我:quote:我感觉友元还不如公开量化接口,接口。怎么理解?
王:你能确定仅有一个类需要这样,以后不会有其它的类变成它的友元吗?就是说,宁愿使用public,而不是friendclass。
我:为什么?如果照这样,pulic量化接口,接口将会越来越多。
王:也不是,这个要具体分析。总体原则我是这样理解的。
我:我是说遇到我说的那种情况,我觉得使用友元类比使用public量化接口,接口要好。如果某一量化接口,接口只被另一个类使用的话。
同事李:你能确定以后不会有其它的类也会用这个类吗?还是量化接口,接口好些吧。
我:那以后有需要再变成public量化接口,接口也可以的。
我:quote:还是量化接口,接口好些吧。怎么个好法。
李:不是有句话叫:“针对量化接口,接口编程,不针对实现编程”
我:我感觉有必要尽量避免public量化接口,接口的膨胀。
李:不是吧,量化接口,接口多没有关系呀,说明外面有需求,还有就是说明这个对象有这种行为。
我:量化接口,接口多意味着一些问题。首先这个类的设计功能是不是单一;其次量化接口,接口一多意味着外部使用的难度增大。
李:类是一个对象,某些对象它就有这么多的功能。成员变量不要公开就行的。
我:功能量化接口,接口的访问权限有差别的。
李:什么意思?
我:比如private量化接口,接口只能自己使用,protected量化接口,接口在自己的继承体系内使用,public量化接口,接口则无限制。
李:这我知道。这跟声明public有什么关系呀?如果只有自己使用,当然声明为private量化接口,接口。关键是要把量化接口,接口写好,写得方便使用。
我:我是说public量化接口,接口不宜变多,如果它只是一个类使用的话,我感觉声明为友元类更好。
李:只要有其它类用最好用量化接口,接口。这样减少耦合。因为这个对象里面的其它东西可能对另外的类用不到。
我:我不过是说是这个量化接口,接口限制在友元类使用罢了。不知你们怎么理解的?
李:友元本来就是一种不好的设计关系。
我:不好在哪里?
李:把两个东西混到一起了。
我:不知道怎么混了。你声明和不把它声明,二者有耦合关系吗?
李:好了,不讨论了。
我:刚才激动了,等会上网查查友元的使用坏处。
李:没有事儿的,解决问题是王道。
我:嗯,是的,感觉这个问题讨论的意义不大,呵呵。
同事马:quote:友元就意味着对局部范围公开。A是B的友元,另一个类C::fun(A&)在C中也可以访问B的私有成员了。
我:C和A、B是什么关系?
同事马:没有关系。
我:quote:A是B的友元,另一个类C::fun(A&)在C中也可以访问B的私有成员了。
可以这样做吗?我得测试下。
同事张:友元是一个有争议的东西,可以用来提高封装,也可以用来破坏封装。
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点