浏览 3435 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-14
最后修改:2009-03-15
1、getProperty() vs property() 在JAVA中,对于一般来说是只读、但是可能后期演变为可写的property来说,是命名为property()还是getProperty()?比如说如何命名Stack的top属性,可能的选择有两种: class Stack { int size(); void top(); } class Stack { int size(); void getTop(); } 需要更新栈顶的情形很少见,提供一个只读的top()就足够了,有些实现(如QT的QPtrStack)采用的是top()的风格,这样比较简洁,再说了,凭什么size没有被命名为getSize()。问题在于,一般来说栈顶是只读的、但是某些情况下还是需要对栈顶进行更新的,如果一开始贪图简洁的话,最后接口就变为: class Stack { int size(); void top(); void setTop(value); } PS: 在我自己写的一个程序中,一开始读取top时采用的是top(),后来发现某些情况要更新top,所以就加上setTop,最后就出现了这个问题。 2、isActive() vs active() vs getActive() 如何命名bool类型的property,比如说:表示Connection是否活跃,是isActive() 还是active()还是getActive()?这三种命名各有优缺点,但是因为存在多种可能的getter/setter的命名方式,会造成不一致的命名风格。 3、在C#中,非名词性的empty、full是作为方法好还是属性好? 如果使用C#设计Stack,把名词性的size、capacity、top设计为属性,把它们看作是Stack的字段还是比较好理解的,但是把非名词性的empty、full也作为属性,个人感觉有些生搬硬套,当然纯属个人喜好,不知大家的看法如何? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-03-15
最后修改:2009-03-15
cscript 写道 JAVA setter/getter与C# property孰优孰劣是个充满争论的问题,本贴不打算讨论它们之间的优缺点,只是把我在实际开发中遇到的设计疑惑列举一下:
1、getProperty() vs property() 在JAVA中,对于一般来说是只读、但是可能后期演变为可写的property来说,是命名为property()还是getProperty()?比如说如何命名Stack的top属性,可能的选择有两种: class Stack { int size(); void top(); } class Stack { int size(); void getTop(); } 需要更新栈顶的情形很少见,提供一个只读的top()就足够了,有些实现(如QT的QPtrStack)采用的是top()的风格,这样比较简洁,再说了,凭什么size没有被命名为getSize()。问题在于,一般来说栈顶是只读的、但是某些情况下还是需要对栈顶进行更新的,如果一开始贪图简洁的话,最后接口就变为: class Stack { int size(); void top(); void setTop(value); } PS: 在我自己写的一个程序中,一开始读取top时采用的是top(),后来发现某些情况要更新top,所以就加上setTop,最后就出现了这个问题。 2、isActive() vs active() vs getActive() 如何命名bool类型的property,比如说:表示Connection是否活跃,是isActive() 还是active()还是getActive()?这三种命名各有优缺点,但是因为存在多种可能的getter/setter的命名方式,会造成不一致的命名风格。 3、在C#中,非名词性的empty、full是作为方法好还是属性好? 如果使用C#设计Stack,把名词性的size、capacity、top设计为属性,把它们看作是Stack的字段还是比较好理解的,但是把非名词性的empty、full也作为属性,个人感觉有些生搬硬套,当然纯属个人喜好,不知大家的看法如何? 伪问题 C#中,top() 还是 top {set;get} 呢?? |
|
返回顶楼 | |
发表时间:2009-03-18
最后修改:2009-03-18
楼上提到的就不重复了
cscript 写道 3、在C#中,非名词性的empty、full是作为方法好还是属性好?
如果使用C#设计Stack,把名词性的size、capacity、top设计为属性,把它们看作是Stack的字段还是比较好理解的,但是把非名词性的empty、full也作为属性,个人感觉有些生搬硬套,当然纯属个人喜好,不知大家的看法如何? 可惜的就是C#的标识符规则还是比较传统的,不然如果能在属性名末尾写问号就方便很多,stack.Empty?之类的。.NET标准库里对这种bool类型的属性经常用IsXXX的形式命名,也不错,你看IList.IsReadOnly就是属性而不是方法。 |
|
返回顶楼 | |
发表时间:2009-03-18
IsXXX是符合flow chart判断框的做法吧?
|
|
返回顶楼 | |