单一项原则(单因素原则)真的很有用,特别是用于找出问题的根源.
上周改一个bug,bug的现象是:
在火狐中,打开界面(当然是公司产品的界面,不便给出地址),点击导航项时,除了打开导航的模块,同时会打开一个空白的页面.
我是怎么解决这个bug的呢?
我找到导航的那段代码,以及相应的事件处理的js,copy到一个简单的html页面中.
如下:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="jquery-1.11.1.js"></script> <script type="text/javascript"> $(function(){ if($("#intro").length > 0){ $('#intro').click(function(){ window.open("http://hw1287789687.iteye.com/"); }); } }) </script> </head> <body> <a id="intro" href="javascript:void(0)" target="_blank">功能介绍</a> </body> </html>
首先,我想到的是要在火狐上重现.于是很容易地重现了.
然后我就试图找原因,不断的尝试,因为就这个简单的页面,没有其他因素的干扰,所以很快就找到了原因和解决方法.
注意:以上的bug在chrome中无法重现,必须在火狐中才能重现.
请问,我为什么不深入产品的代码中去找原因呢?
(1)如果使用产品的代码找原因,首先我得让它在我本机运行起来,光搭建环境就很费劲,麻烦!
(2)不便于测试,因为产品的代码很多,功能模块多,比较庞大,刷新一下页面就得两三秒,问题是大部分资源的请求与这个bug一毛钱关系都没有;
(3)干扰因素比较多,不确定是这个模块的问题,还是那个模块抽筋.而我把关键代码抽出来,思路就很清晰了,影响的因素就只有一个了.这就是我要说的单一项原则.
单一项原则,核心思想就是无论在什么情况下,都必须保证只有一个因素在影响,或者说只有一个变量.必须是一次方程,不是二次方程(初中数学里面的).
x+3的结果就只与x有关,如果它的结果增加了10,我们就能够确定是x增加了10,因为它的结果只与x有关系.
x+y+3的结果同时与x,y有关,如果它的结果增加了10,我们无法判断是x的影响还是y的影响,抑或是x,y共同作用的结果.
之前不知道在哪里(知乎?)看过一篇文章说的好像是关于"最强大脑"(吕飞龙用声音吹破玻璃杯)的,说这个人可以通过口吹气把玻璃杯吹破 ,表演时第一次没有成功,他要求再试一次,并且提出用自己的手拿着玻璃杯.有一个教授站出来不同意他用手接触玻璃杯,解释说如果他用手接触玻璃杯的话,就会对结果有干扰.
到底是吹破的,还是捏破的呢?
因为有两个因素,所以不确定是哪个在起作用.所以这是不符合单一项原则的.但是现场的嘉宾竟然同意了吕飞龙的(扯淡的)要求,唉,真理经常站在少数人一边.那个正直的教授竟然被人骂....
总结:我们在思考问题的时候,也要充分利用单一项原则,这样我们的思路就会豁然开朗,也更容易抓住主要(关键)因素.
参考:http://hw1287789687.iteye.com/blog/2310000
相关推荐
这一原则指出,一个类或者模块应该有且只有一个职责,即它应该只负责一项任务或一个方面的功能。这意味着,一个类的变更应只因为其自身的功能改变而发生,而不是由于其他不相关的功能需求。 在Java编程中,遵循单一...
其中,"单一职责原则"(Single Responsibility Principle,SRP)是面向对象设计的基本原则之一,也是Java设计模式中的重要组成部分。本篇文章将深入探讨单一职责原则的概念、意义、应用及其在Java编程中的实际运用。...
《单一职责原则详解》 在软件工程领域,设计原则是构建高质量、可维护代码的关键指导方针。其中,“单一职责原则”(Single Responsibility Principle,SRP)是面向对象设计的五个核心原则之一,由罗伯特·C·马丁...
Java设计模式中的单一职责原则(Single Responsibility Principle,SRP)是面向对象设计的基本原则之一,它的核心思想是:一个类或者一个模块应该只有一个引起它变化的原因。这意味着一个类应该只负责一项职责,使得...
微软的软件开发过程基于五项基本原则,旨在高效、有序地创造出...以上五项原则构成了微软软件开发的核心,体现了微软在项目管理、需求分析、设计、开发和测试方面的严谨性和用户导向性,保证了其软件产品的创新和质量。
【六级英语写作的七项原则详解】 六级英语写作是一项考验考生综合语言能力的任务,遵循一定的写作原则有助于提升文章质量。以下是对这七项原则的详细解释: 1. **长短句原则**:写作中应适当搭配使用长句与短句,...
单一责任原则指出,在软件工程中,一个类应该只有一个改变的理由,也就是说一个类只负责一项任务或职责。如果一个类承担过多职责,那么当其中一个职责发生变化时,可能会影响到其他职责的实现,导致类的复杂度增加,...
这四项原则分别是三米原则、区域负责制原则、阳光服务原则和首位接待负责制原则。 三米原则是员工与顾客互动的首要规范。它要求员工在顾客进入三米范围内时便主动打招呼,这不仅是对顾客的尊重,也是展现苏宁良好...
单一职责原则是指一个类只负责一项职责。问题来源于类 T 负责两个不同的职责:职责 P1 和职责 P2。当由于职责 P1 需求发生改变而需要修改类 T 时,有可能会导致原本运行正常的职责 P2 功能发生故障。解决方案是遵循...
【结构设计的四项原则】 结构设计是建筑工程中的关键环节,旨在确保建筑物的安全、稳定与经济性。这四个原则——刚柔相济、多道防线、抓大放小、打通关节,是指导结构工程师进行设计的核心理念。 1. 刚柔相济 结构...
这五个原则包括单一职责原则(Single Responsibility Principle,SRP)、开闭原则(Open/Closed Principle,OCP)、里氏替换原则(Liskov Substitution Principle,LSP)、接口隔离原则(Interface Segregation ...
本文将详细阐述成立货币资金内部调控时必须遵循的四项基本原则。 1. **合法并符合实际原则** 合法并符合实际原则强调企业在构建货币资金内部控制时,必须遵守国家相关法律法规,如《公司法》、《企业法》、《会计...
单一职责原则指出一个类应该只有一个引起它变化的原因。这意味着每个类应该专注于完成一项具体的功能,而不应包含过多的责任。这样做有助于保持类的简洁,降低类之间的耦合度,同时也使得维护和测试变得更加容易。 ...
按照单一责任原则,应将其拆分为两个类:“订单”负责管理订单数据,“订单打印机”负责打印订单信息。 **趣图解析**:单一责任原则可以用一个简单的例子来解释——当需要修改某个类的时候原因有且只有一个。...
面向对象设计的主要任务就是类的设计,不少面向对象(OO)的先驱和前辈已经提出了很多关于类的设计原则,用于指导OOP,其中就包括类设计的五项基本原则。 1.单一职责原则(Single Resposibility Principle,SRP) ...
**单一职责原则 (Single Responsibility Principle, SRP)**:一个类或组件应该只负责一项功能或职责。这意味着当需求变更时,只需要修改相应的类,降低其他类受到的影响,从而减少错误传播和系统复杂性。 **开放/...
以上介绍的五种面向对象设计原则——单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则和开闭原则,都是面向对象编程领域中非常重要的指导思想。遵循这些原则可以帮助开发者构建出更加健壮、可维护和易于扩展...
在这个“设计原则示例代码”压缩包中,我们可以期待找到与单一职责原则(SRP)、里氏替换原则(LSP)以及依赖注入原则(DI)相关的Java实现。下面将详细解释这些原则,并通过实例代码进行阐述。 1. **单一职责原则...
1. **单一职责原则(Single Responsibility Principle, SRP)**: - 这个原则要求每个类或对象应只有一个引起它变化的原因,即只承担一项职责。如果一个类包含了多个职责,那么当其中一个职责发生变化时,可能会对...