美文网首页程序员
ruby语言命名规范

ruby语言命名规范

作者: lavender21 | 来源:发表于2016-12-28 13:05 被阅读488次

ruby语言有一个很好的优点就是指定了一套规则,我们无须定义这个变量是什么种类,只需遵循某种命名方式就可以知道这个变量是什么种类的。

  • 局部变量
  • 全局变量
  • 实例变量
  • 类变量
  • 常量
  • 类名模块名
  • 方法名

局部变量

变量在程序中的有效范围是局部的。也就是本地变量。以英文字母或者_开头。像下面这样的变量名在ruby程序中都被视为局部变量。

temp = "this is a local variable"

全局变量

顾名思义,就是在整个程序中都可以访问的,全局变量的值在程序中任何地方都可以修改。$开头。但我们一般不推荐使用全局变量。

$temp = "this is a global variable"

实例变量

@开头,每new一个实例,每个实例就会对应有自己的实例变量。只要实例存在,实例变量的值就不会消失。

class HelloWorld
     def initialize(myname = "ruby")
            @name = myname
     end
     def hello 
            puts "Hello,world. I am #{@name}"
     end
end

bob = HelloWorld.new("BOb")
alice = HelloWorld.new("Alice")
ruby = HelloWorld.new

bob.hello
alice.hello
ruby.hello

类变量

@@开头,所有实例可以共享的变量。在这里顺便说说实例变量和类变量的区别。在上面的例子中,bob``alice``ruby它们都有各自的@name变量,不会相互影响。但类变量不会,它们可以共享。

class C
    @@name = "java"
    def initialize(myname = 'python')
        @name = myname
    end
    def hello 
        puts "实例变量#{@name}"
        puts "类变量#{@@name}"
    end
    def set_class_name(name)
        @@name = name
    end
    def set_name(name)
        @name = name
    end
end
    
c1 = C.new
c2 = C.new
print "初始状态","\n\n"
print "实例1 "
c1.hello
print "实例2 "
c2.hello
print "实例1修改实例变量和类变量","\n\n"
c1.set_name('ruby')
c1.set_class_name('c++')
print "实例1 "
c1.hello
print "实例2 "
c2.hello
print "实例2修改实例便量和类变量","\n\n"
c2.set_name('javascript')
c2.set_class_name('c#')
print "实例1 "
c1.hello
print "实例2 "
c2.hello

运行结果:

Screenshot from 2016-12-28 13-03-10.png

在这个例子中,修改实例变量不会影响其他实例当中的值,但修改类变量会相互影响。这个有点像javascript当中的原型属性和实例属性。

常量

以大写字母开头,内置的一些常量是完全大写的,像ARGV等。

类名和模块名

当出现多个单词组合的类名模块名时,一般以首字母大写,注意,这里不是规定,而是习惯。上面的变量和常量是规定。

class HelloWorld
   ....
end

方法名

当出现多个单词组合的方法名时,小写用_隔开。这个同样也是习惯。不过养成一个良好的编程习惯是很重要的。

def sort_list_by_name
    ...
end

相关文章

网友评论

    本文标题:ruby语言命名规范

    本文链接:https://www.haomeiwen.com/subject/aolyvttx.html