原文參考:
http://rails-bestpractices.com/posts/16-dry-metaprogramming
如果你發現一些方法,其定义是类似的,只是方法名称不同,那么我們可以使用元编程来優化我們的代碼...
先來看看經典的"挫男代碼"(從車車進化而來的東東)
class Post < ActiveRecord::Base
validate_inclusion_of :status, :in => ['draft', 'published', 'spam']
def self.all_draft
find(:all, :conditions => { :status => 'draft' }
end
def self.all_published
find(:all, :conditions => { :status => 'published' }
end
def self.all_spam
find(:all, :conditions => { :status => 'spam' }
end
def draft?
self.status == 'draft'
end
def published?
self.status == 'published'
end
def spam?
self.status == 'spam'
end
end
上面那段代碼一看就知道符合定義類似,方法不同的規則了,那么開始重構吧:
class Post < ActiveRecord::Base
STATUSES = ['draft', 'published', 'spam']
validate_inclusion_of :status, :in => STATUSES
class <<self
STATUSES.each do |status_name|
define_method "all_#{status_name}" do
find(:all, :conditions => { :status => status_name }
end
end
end
STATUSES.each do |status_name|
define_method "#{status_name}?" do
self.status == status_name
end
end
end
嘖嘖
分享到:
相关推荐
Ruby元编程是编程领域中一个深入且强大的主题,它允许程序员在运行时修改或创建代码,极大地提高了灵活性和代码的动态性。这本书“Ruby元编程第二版”专注于讲解Ruby语言的这一独特特性,旨在帮助开发者更好地理解和...
C++元编程和Boost编程库是C++编程领域中非常高级和复杂的概念。它们分别代表了C++语言的模板元编程技术和Boost库中的元编程库(MPL)。 首先,C++元编程指的是利用C++语言特性,在编译阶段进行程序设计,编写出能够...
Ruby元编程是Ruby编程语言中的一个重要特色,它指的是Ruby语言允许程序员在运行时对类、方法和变量等进行操作的能力。通过元编程,开发者可以编写出更加简洁、灵活和高效的代码。《Metaprogramming Ruby》这本书深入...
### 模板元编程技术知识点解析 #### 一、模板元编程概述 模板元编程是一种在C++中利用模板机制来进行编程的技术,它允许开发者在编译时生成和操纵代码,从而达到高度的代码复用性和灵活性。这种编程方式不仅能够...
元编程是一种编程技术,它允许程序员在编译时执行计算,并生成相应的代码。在C++中,模板元编程(Template Meta-Programming,TMP)是一种利用模板实现元编程的方法。模板元编程并非有意设计,而是从泛型编程的实践...
C++模板元编程是一种在编译时执行计算和创建代码的技术,它利用了C++模板系统的能力,将编程任务从运行时转移到了编译时。模板元编程允许开发者编写更高效、更灵活的代码,特别是在处理类型系统和泛型算法时。在本...
《C++模板元编程技术与应用》是一本深入探讨C++模板元编程的书籍,旨在让更多的C++程序员了解并掌握这一技术,从而在编程过程中提高效率和代码质量。模板元编程是C++中一种强大的静态编译时编程技术,它允许程序员在...
C++模板元编程是一种在编译时执行计算和构建类型的技术,它利用了C++模板的强大功能,将元数据(即关于数据的数据)处理提升到了一个新的层次。在C++中,模板不仅仅是用来创建泛型代码的工具,它们也可以被用作一种...
书中可能涵盖了模板参数推断、模板元编程的入门知识,以及如何利用模板来实现泛型算法,如排序、查找等。此外,可能会讨论到模板的编译期多态性,这是C++中一种高效且强大的工具,能够减少运行时的开销。 C++模板元...
C++模板元编程是一种在编译期间通过模板技术进行计算和逻辑处理的编程技术,它允许程序员编写在编译时执行的代码,而非运行时。模板元编程的主要思想是利用C++模板的特性,尤其是模板特化和递归模板实例化,来实现...
Ruby元编程是编程的一种高级技巧,它允许程序员在运行时动态地修改或创建代码,极大地提高了灵活性和代码的可扩展性。Ruby作为一种动态类型语言,其元编程能力尤为强大,使得开发者可以创建出高度定制化的解决方案。...
根据提供的文件信息,本文将对《Ruby元编程》这一主题进行深入探讨,解析其核心概念、应用场景以及为何元编程在Ruby语言中具有重要的地位。 ### 一、Ruby元编程简介 #### 1.1 元编程定义 元编程是指编写能够生成或...
《MacTalk·人生元编程》是由池建强所著的一本关于编程与人生的书籍,它不仅探讨了技术层面的问题,更深入到编程思维对个人成长和生活的影响。这本书结合了作者丰富的编程经验和人生感悟,旨在帮助读者理解编程的...
FEniCS是Linux系统上的一个开源有限元编程语言,主要用于解决各种数学和物理问题。在介绍FEniCS的手册中,详细地讲解了有限元方法的各个理论基础和实现技巧,并提供了一定的示例。 首先,手册中提到了有限元方法的...
### .NET元编程知识点概述 #### 一、元编程概念 元编程(Metaprogramming)是一种编程技术,它允许程序在运行时分析或修改自身结构和行为的能力。在.NET框架中,元编程主要通过反射(Reflection)、动态类型创建、代码...
### C++模板元编程 #### 一、C++模板元编程概述 在现代软件开发领域,C++模板元编程(Template Metaprogramming)是一种利用C++编译器的类型系统来实现计算逻辑的技术。它允许程序员在编译时执行复杂的算法和数据...
C++模板元编程是一种在编译时进行计算和代码生成的技术,它利用C++模板机制的强大功能,将元数据转化为可执行的代码。这一技术在提高程序效率、减少运行时开销、实现类型安全和静态多态等方面具有显著优势。在“C++...
元编程是编程的一种高级形式,它允许程序在运行时检查、修改或生成其他代码。元编程的概念虽然广泛,但在此我们将重点关注其在方法(methods)上下文中的应用。标题"元编程第一章-methods"暗示我们将深入探讨元编程...