Ruby程序约定

时间:2015-10-18 13:40:26

标签: ruby format convention

我是编程新手,需要一些关于程序布局/结构的建议。你能否告诉我这是否是在ruby中构建程序的正确方法?

此程序将文件从SD卡移动到命名文件夹,并提供命名文件的选项。

Dir.chdir '/home/moot/pickaxe/pics' #replace this with destination directory

$pic_names = Dir['/media/moot/**/*.{CR2,cr2,JPG,jpg}'] #replace this with sd card directory

def folder
 puts "Enter the folder name"
 while $folder_name = gets.chomp
 if File.exist?("#{$folder_name}")
   puts "This folder already exists, choose a unique name"
 else
   require 'fileutils'
   FileUtils::mkdir_p "/home/moot/pickaxe/pics/#{$folder_name}"
   break
   end 
  end
end

def files
  puts "Do you want to name the files? Answer y/n"
  while question = gets.chomp
    if question == "y"
      puts "What do you want to call them?"
      $file_name = gets.chomp
      print "Downloading #{$pic_names.length} Files: "
      pic_number = 1
      $pic_names.each do |name|
      print 'ˁ˚ᴥ˚ˀ  '
      new_name = if pic_number < 10
      "#{$file_name} 0#{pic_number} .CR2"
    else
      "#{$file_name} #{pic_number} .CR2"
    end
    require 'fileutils'
    include FileUtils
    cp(name, new_name)  
    pic_number = pic_number + 1
    end
    break
    elsif question == "n"
    print "Downloading #{$pic_names.length} Files: "
        $pic_names.each do |name|
        print 'ˁ˚ᴥ˚ˀ  '
    new_dir = "/home/moot/pickaxe/pics/#{$folder_name}"
    require 'fileutils'
    include FileUtils
    cp(name, new_dir)
    end
    break
    else 
      puts "Please answer y/n"
    end
  end
end    

folder
Dir.chdir "/home/moot/pickaxe/pics/#{$folder_name}"
files
puts "Move Complete."

1 个答案:

答案 0 :(得分:1)

Ruby约定通常会促进更短的方法,因为这会提高可读性,可测试性等。(尽管最终由程序员来决定最好的方法来完成手头的任务。)

您可能实现这一目标的一种方法是先用英语或其他人类语言来思考您的问题,然后将其分解为其组成部分。

换句话说,解决问题涉及哪些具体步骤?

这些步骤可能对应于方法,也许是实体 - 体现为Ruby类或模块 - 为您的问题域建模(在花哨的程序员中)。

实践是完美的,编码是最佳实践,但它也有助于阅读他人创建的代码。