以动态类型语言命名变量(例如Ruby)

时间:2011-09-09 15:28:21

标签: ruby-on-rails ruby variables

说我有一个变量patients。它可以代表患者的数量(Integer),患者对象的集合(Patient类),字符串数组或散列。

有时我需要一个简单的计数,但number_of_patients似乎太罗嗦了。 patients_number含糊不清,因为它可能代表患者的身份证或患者人数。将count替换为number稍微好一点,但并不总是适合上下文。

这个问题在Rails中更糟糕,因为使用复数集合的惯例。使用复数名词来表示Integer感觉不对。问题从视图扩展到模型,因为模型通常需要属性来计算事物,而且它们可能具有关联的集合(例如,report具有documents表示Document个对象,一个字段称为代表diseases的{​​{1}}和代表Array的{​​{1}}字段。

是否有处理这些案件的惯例?

3 个答案:

答案 0 :(得分:3)

我使用patients_count因为这是:counter_cache => true belongs_to给予class Patient belongs_to :hospital, :counter_cache => true end 时ActiveRecord使用的内容,例如:

hospital.patients_count
每次将相关患者添加到医院时,

都会尝试增加{{1}}。 (Rails API docs

答案 1 :(得分:2)

有许多惯例,我承认不一定知道Rails成语,但是......

我总是会将患者数量称为numPatientsnum_patients(取决于语言习语)。

数组/哈希/患者集合很可能被称为patients

YMMV

答案 2 :(得分:1)

多数的实现很少很重要,因为无论后备类如何,都以相同的方式迭代枚举。事物的计数/大小应该以这样的方式命名 - patients就是它所说的,患者,而num_patients /等。代表计数。