`

单一项原则

阅读更多

单一项原则(单因素原则)真的很有用,特别是用于找出问题的根源.

上周改一个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 

1
0
分享到:
评论

相关推荐

    单一职责原则

    这一原则指出,一个类或者模块应该有且只有一个职责,即它应该只负责一项任务或一个方面的功能。这意味着,一个类的变更应只因为其自身的功能改变而发生,而不是由于其他不相关的功能需求。 在Java编程中,遵循单一...

    Java设计模式中单一职责原则详解.rar

    其中,"单一职责原则"(Single Responsibility Principle,SRP)是面向对象设计的基本原则之一,也是Java设计模式中的重要组成部分。本篇文章将深入探讨单一职责原则的概念、意义、应用及其在Java编程中的实际运用。...

    6单一职责原则-课程内容.rar

    《单一职责原则详解》 在软件工程领域,设计原则是构建高质量、可维护代码的关键指导方针。其中,“单一职责原则”(Single Responsibility Principle,SRP)是面向对象设计的五个核心原则之一,由罗伯特·C·马丁...

    简单讲解Java设计模式编程中的单一职责原则

    Java设计模式中的单一职责原则(Single Responsibility Principle,SRP)是面向对象设计的基本原则之一,它的核心思想是:一个类或者一个模块应该只有一个引起它变化的原因。这意味着一个类应该只负责一项职责,使得...

    微软软件开发过程五项基本原则

    微软的软件开发过程基于五项基本原则,旨在高效、有序地创造出...以上五项原则构成了微软软件开发的核心,体现了微软在项目管理、需求分析、设计、开发和测试方面的严谨性和用户导向性,保证了其软件产品的创新和质量。

    六级英语写作的七项原则

    【六级英语写作的七项原则详解】 六级英语写作是一项考验考生综合语言能力的任务,遵循一定的写作原则有助于提升文章质量。以下是对这七项原则的详细解释: 1. **长短句原则**:写作中应适当搭配使用长句与短句,...

    软件设计6原则

    单一责任原则指出,在软件工程中,一个类应该只有一个改变的理由,也就是说一个类只负责一项任务或职责。如果一个类承担过多职责,那么当其中一个职责发生变化时,可能会影响到其他职责的实现,导致类的复杂度增加,...

    设计模式六大原则与类的六种关系

    单一职责原则是指一个类只负责一项职责。问题来源于类 T 负责两个不同的职责:职责 P1 和职责 P2。当由于职责 P1 需求发生改变而需要修改类 T 时,有可能会导致原本运行正常的职责 P2 功能发生故障。解决方案是遵循...

    结构设计的四项原则.doc

    【结构设计的四项原则】 结构设计是建筑工程中的关键环节,旨在确保建筑物的安全、稳定与经济性。这四个原则——刚柔相济、多道防线、抓大放小、打通关节,是指导结构工程师进行设计的核心理念。 1. 刚柔相济 结构...

    苏宁服务四项基本原则.pptx

    苏宁服务的四项基本原则是苏宁公司在2008年2月为新入职员工设定的服务标准,旨在确保提供优质、专业且一致的客户体验。这四个原则包括:三米原则、区域负责制原则、阳光服务原则和首位接待负责制原则,都是为了强化...

    深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP

    这五个原则包括单一职责原则(Single Responsibility Principle,SRP)、开闭原则(Open/Closed Principle,OCP)、里氏替换原则(Liskov Substitution Principle,LSP)、接口隔离原则(Interface Segregation ...

    成立货币资金内部调控须遵循的四项原则.doc

    本文将详细阐述成立货币资金内部调控时必须遵循的四项基本原则。 1. **合法并符合实际原则** 合法并符合实际原则强调企业在构建货币资金内部控制时,必须遵守国家相关法律法规,如《公司法》、《企业法》、《会计...

    面向对象的三大特性五项原则

    单一职责原则指出一个类应该只有一个引起它变化的原因。这意味着每个类应该专注于完成一项具体的功能,而不应包含过多的责任。这样做有助于保持类的简洁,降低类之间的耦合度,同时也使得维护和测试变得更加容易。 ...

    你知道软件设计的6大原则吗?S.O.L.I.D.设计原则

    按照单一责任原则,应将其拆分为两个类:“订单”负责管理订单数据,“订单打印机”负责打印订单信息。 **趣图解析**:单一责任原则可以用一个简单的例子来解释——当需要修改某个类的时候原因有且只有一个。...

    c++ 面向对象设计五大原则

    面向对象设计的主要任务就是类的设计,不少面向对象(OO)的先驱和前辈已经提出了很多关于类的设计原则,用于指导OOP,其中就包括类设计的五项基本原则。 1.单一职责原则(Single Resposibility Principle,SRP) ...

    面向对象的11个原则

    **单一职责原则 (Single Responsibility Principle, SRP)**:一个类或组件应该只负责一项功能或职责。这意味着当需求变更时,只需要修改相应的类,降低其他类受到的影响,从而减少错误传播和系统复杂性。 **开放/...

    面向对象设计原则

    以上介绍的五种面向对象设计原则——单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则和开闭原则,都是面向对象编程领域中非常重要的指导思想。遵循这些原则可以帮助开发者构建出更加健壮、可维护和易于扩展...

    设计原则示例代码

    在这个“设计原则示例代码”压缩包中,我们可以期待找到与单一职责原则(SRP)、里氏替换原则(LSP)以及依赖注入原则(DI)相关的Java实现。下面将详细解释这些原则,并通过实例代码进行阐述。 1. **单一职责原则...

    C++设计原则 完整整理 快速理解设计原则

    1. **单一职责原则(Single Responsibility Principle, SRP)**: - 这个原则要求每个类或对象应只有一个引起它变化的原因,即只承担一项职责。如果一个类包含了多个职责,那么当其中一个职责发生变化时,可能会对...

    java面向对象设计的六大原则

    以下将详细介绍面向对象设计的六大原则:单一职责原则(Single Responsibility Principle, SRP)、开放封闭原则(Open-Closed Principle, OCP)、里氏替换原则(Liskov Substitution Principle, LSP)、依赖倒置原则...

Global site tag (gtag.js) - Google Analytics