Naming conventions play an important role to the software’s overall architecture. It is not a rocket science, still, it may lead to unhappy consequences if not taken care of at the early stage of a project. This small best practices can make a code base significantly improved.
Rails does a good job by using the dynamic power of ruby and providing with a handful of dynamic methods with the models. ActiveRecord::Base and its included modules follow a consistent naming, which clearly represent the intended purpose of the methods. At Code71, we are working on ScrumPad, a 2nd generation agile scrum tool using ruby on rails and our model methods are named according to the following rules-
1. All boolean returning methods end with ‘?’
company.billable?, sprint.current?, story.in_progress?
2. Boolean methods do not start with is_ or has_ or did_ (as you might see in other popular languages)
company.is_billable? -> company.billable?
sprint.is_current? -> sprint.current?
3. find_ and find_all are used only for class (self.find or self.find_all) methods and should return a single/array of object of the class respectively.
find_* methods may return a single object of the class/nil
find_all_* methods return an array of objects of the class or , but never a nil
4. No methods start with a get_ as other languages.
5. A method ends with ! if it alters the object itself.
6. Methods that persists an object/may throw exception, should always end with ! (implied from rule 5)
7. Always use parentheses ‘()’ in method names. Future versions of ruby is deprecating the support for method names without parentheses.
Following these 7 simple rules we have consistent and intuitive model method names across the whole ScrumPad. Let me know if you have any suggestion to these names to make it even better.