浏览 2492 次
锁定老帖子 主题:Naming a Method
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-07-10
The Java WayIn Java, we were educated to use a verb + noun to name a method. With the knowledge of design patterns, we really have a bunch of verbs to select, createXxx or makeXxx for factory, buildXxx for builder, just to name some. This naming scheme makes it clear that it's a method, or more casually, an action, which "does something".But is this kind of naming scheme unquestionable? In one recent Java project, we need to create lots of stub data to mock the response from web services for unit testing. In one unit test, the code is just like this: java 代码
And in method createStubAResponseType, code goes like this: java 代码
Pretty straightforward. But the problem with me is that they read NOT so naturally. Why the prefix "create" for every stub data creation method? Wouldn't java 代码
java 代码
It's a small step, but I think it makes difference. For the reason, read on. The Ruby WayFor Ruby newbies, it takes quite a while to get used to the method naming convention used in Ruby (and especially Rails). Initially, it appears confusing to tell what is a field, what is a method, or what on earth it is (this definitely occurred to me)!E.g., here's a dummy Rails generator excerpted from book Rails Recipe: ruby 代码
Notice how methods are named:
manifest instead of define_manifest, usage_message instead of show_usag_message, etc. In Ruby, methods are named after the return value, using a noun. Compared with the scheme used in Java, this means we don't care about whether it's an action we need to carry out or it's already there, we just "read" it out. Ruby's method naming convention is more result-oriented and, from Bertrand Meyer's (the author of Object-Oriented Software Construction) point of view, more object-oriented, cause it treats method and field in unified way. And this is one of the reasons why Ruby is so suitable for define internal DSL (the other reasons are closure/iterator, hash, etc.). 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |