Ruby七日谈.第二夜—面向对象

不觉春消散得这般快,下午出去扫个尾,临河樟树上一躺、跟着歌哼哼唧唧,旁边的鸟儿也是。还有许多松鼠穿来荡去。微风一来,似梦似醉。

心里念着,有酒的神仙也不过如此吧。作为一只JAVA猿,在不写程序的时光里,生活简简单单,虚度得如此美好。

但程序的世界杂念太多,以致背离了美的初衷。今夜我要谈—面—向—对—象!我不喜欢它,以Ruby之名。

乔布斯在90年代的一个电视节目里曾谈到面向对象,举了个咖啡的例子。从前的程序需要知道一杯摩卡的每个制作细节,亲自制作;而面向对象,仅需走进咖啡馆、冲着漂亮的女服务员、“嗨〜一杯摩卡”。

虽然乔布斯写程序没我厉害,但不可否认这个栗子很好。wikipedia关于OOP的首句画风却是这样:
Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which may contain data, in the form of fields, often known as attributes and code, in the form of procedures, often known as methods.

不明觉厉!下午我躺在树上一阵微风、沁人心脾。但在嘈杂的咖啡馆,经常旁边坐着一堆发际线明显的年青人,有的大叫、有的脸红,混乱之中好不容易才辨识了一句“面向对象就是封装、继承、多态”。

很多程序猿入行起就被强行灌入了很多高大尚的酒,醉了便再也不醒人事。也忘记了像乔布斯那样说人话,我宁愿记起前台那身材正点的妹纸。

面向对象,精髓更多是面向漂亮的女孩子,而不是像SOLID原则这样生硬的花招。Spring团队花了很多年才将“控制反转”换成了“依赖注入”,虽然技术实现都一样、但忽略了问题的本质。

很多程序猿爱分析xx的原理,但对xx所解决的问题、却理解不深。工作实践上做系统设计,解决方案从来都有N种,跟据所面临的问题来择其优劣。

OOP将复杂的世界解藕成对象和关系,关系更加重要点,就像人跟社会、社会更重要一样。OOP就像交易的契约、通行货币,是对服务的承诺。以物易物,我养牛的不需要种小麦,拿钱交易。

软件设计思想是没有边界,但语言从来都有。

作为Rubyer,我深知Java是有罪的,在面向对象方面,因为它很庸肿,继承、抽象、还有死版的接口。继承是很糟糕的一套,好在GO已经没有继承机制。Object-C曾经必有.h和.m来分别定义interface和实现,幸运的是Swift把它干掉了。

Ruby的迷人在于它有很多很多方式叫人爽,无论从哪偷来的。首先一种是“Duck Typing",英雄莫问出处,你只要叫的像只鸭子、走得像只鸭子,即便是个人、但在我心中永远都是只鸭子。

In Ruby, we rely less on the type (or class) of an object and more on its capabilities. Hence, Duck Typing means an object type is defined by what it can do, not by what it is. Duck Typing refers to the tendency of Ruby to be less concerned with the class of an object and more concerned with what methods can be called on it and what operations can be performed on it. In Ruby, we would use respond_to? or might simply pass an object to a method and know that an exception will be raised if it is used inappropriately.

代码不会思考,但人会。优秀的语言不关心咖啡小妹是长腿的还是胸大的,它关注的应该是能为我提供咖啡的服务。Ruby天然萌。

还有更酷的武器让很多程序语言哭晕在厕所。我曾做一个特别恶心的需求,那年还很年青,产品姐姐说就照着xx那样做,于是把那个业务线的代码copy过来,过程疼得就像连根拔起一棵大树,涉及10来个类,我需要的仅是那200行不到的功能。

这是个很悲伤的故事。因为它乱用了继承,像蜘蛛网一样牵一发而动全身。Ruby有include,带组合的味道。

module ModuleA
def greet
puts 'hello world'
end
end

module ModuleB
include ModuleA
end

ModuleB.new.greet

hello, world!非常美妙,就像下午那阵微风、浮动着静静的河水,令人怀念。我躺在树上酣睡了半天,树下路过个小女孩,就像发现新大陆一样冲着妈妈尖叫,“看,有大叔在树上睡觉。”

也许我老了,不再年青,却更懂时间。曾经在风景里瞎逛,今天在风景的树上一躺,也成了风景本身。我不是在嘲笑Java、也无意乱喷什么,而是真爱自由、开放、包容的Ruby。

2016/04/17
于上海

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容

  • Awesome Ruby Toolbox Awesome A collection of awesome Ruby...
    debbbbie阅读 2,823评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,637评论 18 139
  • 当英雄老了 当世界不再需要他们了 当科技发展到可以人为制造替代他们了 等待他们的 或许只有死亡了 因为他们被视为不...
    chason_yong阅读 425评论 0 0
  • 相逢是首歌, 与亲人相逢像是在春天里 有着和煦的阳光,鼓舞的动力 还有肥沃的土壤,支持的欣慰 让我茁壮成长! 相逢...
    梁采文阅读 338评论 0 0
  • 夏日将至,抓住春的尾巴,到洛阳相遇牡丹 图片拍摄于 洛阳国际牡丹园 手机拍摄未修图,器材iphone 7 plus
    亦木竹夭阅读 240评论 0 0