基类与愚公移山

文/高焕堂
 
基类(Base Class)又称为超类(Super Class)是软件应用框架(Application Framework)的核心组件,它预留了许多虚空之处,就如同畚箕一般,让愚公把泥土填入其中,挑去填北海。在Google推出的Android手机平台的应用框架里就含有成百上千个基类,例如最常用的Activity基类,Android应用程序员就依据用户需求而撰写子类(Sub Class)去把基类预留的虚空填实,就成为用户可用的软件程序了。
我并不是说写子类的程序员是愚公,只是想藉家喻户晓的愚公移山故事凸显我们常常忽略掉基类(畚箕),注意力偏重于用户需求和子类。当我们持着这个观点时,就会竞争比较谁擅用畚箕、谁挑得最快、唯有愚公才能毕其功而不功亏一篑。君不见,我们的畚箕和扁担五千年来似乎没多少新花样;反观英国的大英博物馆里收藏的马铃薯销刀就多达3000种花样。如果我们把焦点放在畚箕,则可得到另一个观点:众人皆淘金,唯我做牛仔裤。据说LEVI*S和Microsoft公司都持此观点。当我们持着这个观点时,就会竞争比较谁能做出更酷又炫的畚箕,并提供巨额奖金鼓励更多愚公来移山,这样很快就把山移完了。
虽然基类与子类里都是代码,但是前者挖空务虚,后者填满务实,在心法和工法上都是相反而互补。挖空就是洞悉潜在用户需求未来会变,然后预留卡榫;填满就是用户出现了,将其特殊相插入卡榫里。
基类也像雀巢咖啡包,而子类像是以咖啡包加糖而泡出来的一杯咖啡。当软件产业长期忽略基类时,就只能依赖外国提供,软件公司变成开咖啡厅,向客人收小费。意味着整个IT产业偏向于信息产业,而软件本业可能会逐渐式微。就拿飞机产业来比喻吧,信息产业相当于航空业(如深圳航空公司),软件本业就相当于飞机业(如波音公司)。
《礼记·学记》里提到:良弓之子,必学为箕。如果礼记的观点是合理的话,则唯有能做出好的箕,才能做出好的弓。亦即,软件产业之子,必学撰写基类。俗语说:见微知着,如果产业里很少程序员负责撰写基类给别人用的话,可能意味着该产业偏向愚公移山的观点,竞相比较谁擅长于用别人的基类(如Google Android应用框架)撰写子类来服恃用户。当用户规模愈大,软件产业就愈仰赖外国的基类了。
 
高焕堂,台湾软件架构设计大师,从事IT行业近30年,被称为“台湾OO技术教父级代表人物”。曾经创办MISOO对象教室及《SoSE杂志》,现于MISOO软件开发与管理顾问公司担任CSA职务。
本文摘自《程序员》杂志08年6期“评论”栏目。
 
  
 
Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐