2015-10-18 16 views
1

我是编程新手,需要一些关于程序布局/结构的建议。你能否建议这是否是用红宝石构建程序的正确方法?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." 
+0

[Code Review](https://codereview.stackexchange.com/)可能是这类问题的更好地方。 – spickermann

回答

1

红宝石公约普遍推广较短的方法,因为这提高了可读性,可测试性,等等(虽然它到底是给你的程序员来决定什么是最好的完成手头的任务。)

你可能做到这一点的一种方法是首先用英语或其他人类语言来思考你的问题,并将其分解成它的组成部分。

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

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

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