面向函数编程实际直接以方法函数为第一,也就是不受Class类限制,也就会产生“无主行为”,直接导致混乱。
在职责驱动开发思想中,我们将方法行为称为职责,从这两个词面理解,方法行为和职责行为有什么区别呢?
或者说,什么样的方法行为才称为职责行为呢?这里隐藏了一个主语主角,当一个方法行为被强烈显式声明归纳于一个“主人”时,那么,这些行为可以认为是它的职责行为,是它职责所在,它要对自己的行为负责。
在一个可管理的世界中,如果我们将所有的方法行为都能归纳到其主人边界内,那么,很显然这个世界是井然有序的,比如人类社会,如果每个人不对其行为负有职责,那么法律何以惩治它,社会比如陷入混乱,骚乱的本质是打砸抢行为属于无主行为。
所以,当我们把客观世界镜像到软件世界中时,将各种行为进行角色化,归主化,实际是为了建设一个灵活易于维护拓展有序的系统。
那么面向函数这种堪称“无政府主义”行为模式在什么情况下可以允许呢?这个隐式的边界是纯计算机技术领域,比如云计算这个边界内计算功能是第一,也没有必要归计算功能进行归类,因为我们要的就是突出显式计算;还有在浏览器这个容器里,我们使用JS这样面向函数很方便,也无需归主,因为这些函数第一要求就是对浏览器页面进行操作,和服务器进行交互,这里动作是第一,也不要担心其产生混乱,因为有前端浏览器容器这个隐式边界限制它。
在UNIX或LINUX我们都是函数方法第一,因为通过Shell直接命令Linux干活,虽然在这里我们不需要归主,但是也产生问题,对Linux很多命令无法面面俱到,想达到某个目的时,很费劲才找到,这是函数无政府的结果;而在Windows里我们一般可以在相应的管理边界中找到相应的命令,比较轻松,因为命令有序管理着。