扯诞🤪
zgw106813
关注数: 28
粉丝数: 16
发帖数: 440
关注贴吧数: 12
测试一下 哈哈哈哈
设计模式-可复用面向对象软件的基础 3.1-3.2 抽象工厂是一个比较复杂的创建型模式; 它提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 何时使用&使用场景: 系统的产品有多于一个的产品族,而系统只消费其中某一族的产品时。 一个对象族(或一组没有任何关系的对象)都有相同的约束。 优点: 封装性,易于产品交换。由于具体工厂类在一个应用中只需在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,只需改变具体工程即可使用不同的产品配置。 创建实例过程与客户端分离。 缺点: 产品族扩展非常困难,改动或增加一个产品需同时改动多个类。
第二章中2.7~2.9节 阅读第二章中2.7~2.9节感受: 主要介绍用户操作功能以及介绍设计command模式的应用 command模式:它是一种行为型设计模式,它的核心思想是将一个请求封装成一个对象,从而使你可以用不同的请求对客户进行参数化。对请求排队或记录,以及支持可撤销的操作。命令模式的主要目的是将发出请求的对象和执行请求的对象解耦。 命令(Command):这是一个接口,它声明了执行操作的方法。这个接口是所有具体命令类的基础,确保它们具有统一的执行方法调用方式。 具体命令(ConcreteCommand):这是实现了Command接口的具体类。它定义了接收者如何进行具体的操作执行。一个具体的命令类通常会持有一个对接收者的引用,并通过调用接收者的方法来完成请求的处理。 接收者(Receiver):这是知道如何实施与执行请求相关的操作的类,也就是实际执行命令的对象。任何类都可能成为一个接收者,只要它能够实现命令要求实现的相应功能。 发送者(Invoker):这是负责调用命令对象执行请求的类,它会持有一个命令对象,并在某个时间点触发命令的执行。调用者作为一个中介,将发起请求的对象和执行请求的对象解耦。
设计模式-第二章 阅读第二章的感受: 主要介绍了如何设计一个名为Lexi的文档编辑器,主要分为以下几个部分: 1、文档结构:存储“文字”、“图片”等数据的结构是什么。 2、格式化:将一个图元集合分解为若干行 3、修饰用户界面:主要两种修饰,第一种是在文本编辑区域周围加边界以界定文本页;第二种是加滚动条让用户能看到同一页的不同部分。 4、支持多种视觉风格:Lexi希望支持多个平台,而移植的一大障碍就是不同视觉风格的差异,比如按钮,在不同系统的就不一样 5、支持多窗口系统:Lexi所运行的窗口环境,不同系统的视觉风控不同,这也是系统移植的一个问题 6、用户操作:Lexi的一些功能是界面上所见即所得的,另一些功能是通过下拉菜单或快捷键等完成的。 7、文本分析-如何访问、如何分析:这里的“文本分析”特别指“拼写错误检查”和“连字符检查”。它涉及到两个问题:一是如何访问要分析的信息,二是如何分析
设计模式-可复用面向对象软件的基础 第一章 第一章简要的介绍了设计模式的概念和意义,指出设计模式不仅仅是一些代码片段,更是一种思考方式和解决问题的方法。接着,书中介绍了23种设计模式分为三类:创建型模式、结构型模式和行为型模式。 1、创建型模式:它的主要特点是“将对象的创建与使用分离 2、结构型模式:从程序的结构上解决模块之间的耦合问题 3、行为型模式:主要是类或对象之间的相互作用和职责分配;
重构-改善既有代码的设计 第十二章 阅读第十二章的感受:主要讲解处理继承关系: 1、函数调整: 子类中有重复代码就可以考虑抽象出来上移到父类 父类中的函数如果只与个别子类有关系就可以下移到子类中 2、字段调整: 子类中如果出现比较多的相似字段可以考虑上移到父类 父类的字段只被个别子类用到可以考虑下移子类 3、提炼超类:几个类做了相似的事情就可以考虑提炼出一个超类
重构-改善既有代码的设计 第十一章 阅读第十一章的感受: 主要讲解重构API: 1、函数分离:将混在一起的函数进行拆分,比如一个函数内做了查询又做了修改,那么每次查询都会造成修改,可能会产生副作用,把原来的函数拆成两个责任明确的函数 2、函数参数化:同样的逻辑下,只是有某个数值的区别,可以提炼出函数,把这些数值作为参数传入,就避免了重复代码。 3、移出标记参数:用个flag来区分不同的逻辑处理,但在代码量大的时候挺乱的,一眼看不出来有什么区别,最好把不同情况对应的处理逻辑提炼,并看下能不能把flag判断上移至调用者,有时候甚至会发现上移后根本不需要这个flag判断了。 4、传递完整对象:当我们从一个记录里导出一些值作为参数传给函数的时候可以考虑直接传完整记录给函数,万一以后函数需要别的值就不需要改变接口,直接在函数里修改逻辑就好。 5、清理删除修改值函数:不需要更改某个字段的话,就应该声明为不可修改并去掉设置&修改函数,把值的设定提前到构造函数里,这样可以避免被修改。 6、以工厂函数取代构造函数:在构造函数的调用处,如果希望根据环境或者参数返回不同的实例,就应该用工厂函数,在函数中根据情况来返回不同的实例。
测试一下货 你看见了农农农
重构-改善既有代码的设计 第十章 阅读第十章的感受: 主要讲解如何简化条件逻辑,主要有以下几种方式: 1、分解条件表达式:把条件判断和对应处理都抽成函数;日常开发久了一个条件可能很复杂读起来很费劲,在这个条件下做的事情也有一堆,不如都用函数包起来取个好理解的名字,代码可读性就会提高很多,结构清晰,以后要改什么直接在函数里搞,不用担心把原函数调整乱了,方便维护和扩展。 2、合并条件表达式:对应同样处理的可以把这些条件用或运算合并。if里又if的可以用与运算合并。 3、提前返回:在条件判断中,我们可以优先将异常(不满足程序继续进行)的条件筛选出来,直接return出去。 4、以多态取代条件表达式:程序中遇到多个函数都用相同的判断条件时,就可以创建类,利用多态,把这些同样的条件判断扔到一个工厂函数里,工厂函数根据这些条件创建不同的类。 5、引入特例:同样是多个函数里有相同的判断条件,且这个条件处理的是一种特例,比如null、unknown之类的,可以创建一个字面量对象或者是封装成一个类,这样当条件判断出是特例时却不需要和普通代码做区分,代码就变得简单,而特例的相关记录或是函数都聚集在一起也十分清晰。
测试一下哦 哈哈哈哈哈哈哦耶
重构-改善既有代码的设计 第九章 阅读第九章的感受: 主要讲解如何简化条件语句,使得程序逻辑更清晰,同时方便扩展,主要有以下几种方式: 1、分解条件:将if-else if-else语句块的 条件 和 每个条件执行的逻辑,分解成方法。这样一来,条件更加清楚(通过方法名来传达),每个条件执行的逻辑也通过方法名来传达,同时缩短了原条件语句长度。 2、合并条件语句:能合则合;如果多个条件都返回同样的结果,将这多个条件合并,并以一个函数(Extract Method)的形式表示这个条件。 3、合并重复的条件执行片段:重复的条件执行片段,可以提出到条件之外,根据情况提到条件之前或条件之后。 4、移除控制标志flag:flag使逻辑混乱,可以使用break continue,代替控制标志(flag)。同时作者更倾向于使用return来代替break来终止条件,只要Extract Method做的细,总是可以用return代替break的。 5、用守卫语句(守卫语句就是要么return要么抛异常的语句。)代替嵌套条件:特别条件直接return
重构-改善既有代码的设计 第八章 阅读第八章的感受:主要讲解通过重构手法可以帮助开发者改进代码的内部结构,同时不改变其外部行为 1、搬移函数:将一个函数从一个类或模块移动到另一个更合适的类或模块中,将功能组合相似的函数聚集到一起;2、搬移字段:搬移字段是将一个字段从一个类移动到另一个更合适的类中。当一个字段在另一个类中更频繁地被使用时,进行这种重构可以减少耦合,提高数据的封装性; 3、搬移语句到函数:将一组相关的语句提取到一个独立的函数中,可以提高代码的可读性和复用性。这种重构有助于简化复杂的函数,使代码更易于理解和维护; 4、以函数调用取代内联代码:将重复的内联代码替换为函数调用,可以减少代码的冗余,提高代码的复用性和可维护性。这种重构有助于集中和统一处理逻辑,减少错误的可能性; 5、移动语句:通过调整语句的顺序,使代码逻辑更加连贯和清晰。这种重构有助于减少变量的作用范围,提高代码的可读性; 6、拆分循环:将一个复杂的循环拆分成多个简单的循环,每个循环只处理一种逻辑。这样可以提高代码的清晰度和可维护性,降低出现复杂错误的可能性; 7、移除死代码:移除不再使用的代码可以减少代码库的复杂性,提高代码的清晰度和可维护性;
重构-改善既有代码的设计 第七章 阅读第七章的感受: 主要讲解重构过程中的封装, 封装的意义,在于提炼相同的代码逻辑,借以复用: 1、封装记录:通俗说法就是,将变量对象或需要处理的数据,或不想改变原有值的对象数据,将其封装在一个类中,暴露各种获取方法,产生逻辑所需要的各种数据! 多用于数据转化、深拷贝、格式化数据等等...(注:同时缺点也明显,在复制巨大数据结构时,性能消耗大,按需使用) 2、封装集合:封装记录后返回只读数据/副本数据,即深拷贝后的新数据,避免外部操作,引发数据源的变动;基于以上操作,你需要在类中添加新增/修改/移除函数,用于修改函数数值,避免在外部操作数据! 3、以查询代替临时变量:某些只需要使用一次的计算,且不再改变的变量,可以直接忽略声明,直接在逻辑中以函数代替 4、提炼类:当一个类中函数过于庞大,过于多时,或让这个类难以被人理解,可以考虑将部分功能拆分为更为具体的类,活着提炼一部分超类出来! 5、内联类:当一个类中的函数逐渐被优化、被废弃、被提炼,最终只剩下为数不多的细小的功能,可以考虑将类废弃,并将函数直接放到具体的代码逻辑中 6、替换算法:将一些复杂的算法,拆分为多了小的算法,最后组合长想要的数据,算法也是需要根据时代去变化的
重构-改善既有代码的设计-第六章 阅读第六章的感受: 主要讲解重构过程中函数的重构方法: 1、提炼函数:一些过长的函数或需要注释才能使人理解的函数;将函数细粒度的切分为多个独立函数,函数被复用的机会越大,对函数的覆写也更容易 2、内联函数:有些小函数,他的代码读起来和函数名一样清晰易读,这个时候可以不作为独立函数;有一堆组织不合理的小函数,可以将其组成一个大函数,然后重新拆分为组织合理的小函数 3、临时变量:临时变量往往是用来替换某个查询值。临时变量的存在往往会影响重构;唯一需要使用临时变量的情况是临时变量被赋予一个函数返回值,这种基本没有什么危害; 可以以查询代替临变量:将临时变量赋值提炼为一个有返回值的函数;临时变量是暂时的,且只能在所属函数内使用。导致所在函数变长。把临时变量替换为查询,使得同一个类中所有函数都可以使用。在提炼函数之前往往需要这么做。 一个临时变量被多次赋值:说明它被不同的对象逻辑所需要,这个时候应该拆成多个临时变量分别承载不同对象逻辑的功能赋值 4、函数声明注释:优化调整函数的声明包括函数作者、时间、功能描述等等,便于其他研发更好的理解函数的逻辑内容 5、封装变量:将变量封装成函数的形式进行访问,便于控制变量不会被外部随意修改,同时也能提升代码的可读性和可维护性
重构-改善既有代码的设计-第5章 阅读第四章的感受: 第五章主要告诉我们重构的一些手法 1、名称:要建造一个重构词汇表,名称是很重要的。这个名称也就是我将在本书其他地方使用的名称。如今重构经常会有多个名字,所以我会同时列出常见的别名。 2、简单的速写:这部分可以帮助你更快找到你所需要的重构手法。 3、动机:“为什么需要做这个重构”和“什么情况下不该做这个重构”。 4、做法:简明扼要地一步一步介绍如何进行此重构。 5、范例:以一个十分简单的例子说明此重构手法如何运作。
重构-改善既有代码的设计 第四章 阅读第四章的感受: 这一章为我们讲述了在重构过程中测试得重要性,必须要构建测试体系 自测代码:在每个迭代结束后把测试代码加上,让测试代码自动化得检测代码中存在得问题,减少debug的时间如何进行测试: 编写对功能的测试,而非对某个函数的测试 针对一些可能出现的边界情况进行重点测试,避免程序出现异常
重构-改善既有代码的设计 第2章 阅读第二章的感受:本章主要告诉我们何为重构?为何重构?重构既是名词也是动词,重构是指对软件内部结构进行调整改动,但是对使用软件的用户是无感知的前提下,提升软件代码的可理解和可维护性,降低维护成本; 为何重构: 当我们的软件内部程序随着需求开发功能迭代升级,只为了短期的目的而升级改动代码,他们可能都没有理解内部代码的架构设计,于是软件内部原有的架构就逐渐的失去,软件程序的可理解性和可维护性就会越来越差 通过消除重复代码改善现有代码的设计,我们的软件代码可能在很多地方都使用了相同的代码做同一件事情,就会导致程序无法维护原有设计; 消除程序中的bug,当我们进行重构的时候,会对程序设计理解的更加深入,容易找出潜藏的bug,从而提升代码的质量; 何时重构: 第一次做某件事情的时候我们直接去做(首次需求) 第二次做类似的事情可能会感觉的不适应不舒服,但是依旧会去做(功能迭代升级、新增需求) 第三次再做类似的事情(程序可能已经失去了原有的设计)
重构-改善既有代码的设计 第2章 阅读第二章的感受:本章主要告诉我们何为重构?为何重构?重构既是名词也是动词,重构是指对软件内部结构进行调整改动,但是对使用软件的用户是无感知的前提下,提升软件代码的可理解和可维护性,降低维护成本; 为何重构: 当我们的软件内部程序随着需求开发功能迭代升级,只为了短期的目的而升级改动代码,他们可能都没有理解内部代码的架构设计,于是软件内部原有的架构就逐渐的失去,软件程序的可理解性和可维护性就会越来越差 通过消除重复代码改善现有代码的设计,我们的软件代码可能在很多地方都使用了相同的代码做同一件事情,就会导致程序无法维护原有设计; 消除程序中的bug,当我们进行重构的时候,会对程序设计理解的更加深入,容易找出潜藏的bug,从而提升代码的质量; 何时重构: 第一次做某件事情的时候我们直接去做(首次需求) 第二次做类似的事情可能会感觉的不适应不舒服,但是依旧会去做(功能迭代升级、新增需求) 第三次再做类似的事情(程序可能已经失去了原有的设计)
测试新发第二个帖子 哈哈哈哈哈
测试一下就行 你就知道啊
重构-改善既有代码的设计 第一章 阅读第一章的感受: 作者通过第一章主要为了告诉我们,什么是重构?为什么要重构?作者通过一个示例给我们讲解了重构的大致过程;当需求发生了变化或者是整个代码看起来很难让人理解的时候,就需要进行重构;重构是为了让代码看起来更加的容易理解,提升代码的可维护性可扩展性; 重构的过程: 1、需求变化 当需求发生了变更的时候,那么重构就是必须要做的事情;当一段代码它能正常的运行,并且也不会再去调整它的话,那么是不需要重构的,哪怕这段代码没人能看得懂,没人能理解,也不会影响什么;但如果有人需要去修改它,那么就必须要去理解它的工作原理,如果理解起来很费劲,且程序不易扩展,那么就需要对它进行重构。 2、测试 必须保证全面的测试 3、小范围的修改 建议小范围一点一点的修改,不管修改的简单还是复杂,修改完成后必须测试,保障修改的代码没有问题;不建议一次改动过大,当我们需要进行重构的时候说代码已经很混乱或者很难让人理解,如果大范围的修改,可能造成的问题就是陷入各种bug调试,费时费力 4、性能问题 重构过程中可能重构后代码变得容易理解,且可扩展性较好,但是性能下降了,这个时候一般是先重构完成,再进行性能的优化 5、代码的命名 代码中好的变量命名、函数命名能容易让人理解,维护起来比较方便
***的 今天天气真不错
学习一下 尼玛的啥也不是
123486 494397
[浅谈和平精英的服装类型]男玩家退游原因就在这里 和平精英这款游戏自2019年5月发布至今,已经有将近4年的时间了,这款游戏带来了空前的热度和财富。 在这段时间内,不乏有很多加入这款游戏中的人,但近年也有很多玩家纷纷退游,且大多数都是男玩家,究极原因大部分都是因为游戏内上新的服装。 以ss1赛季的服装来看,在这个赛季中一共上线了4套服装,通过图片可以看到,四套服装都是以黑色元素为主,更可以清楚的看到,这些服装的形象都偏向男性化,且更接近战斗服,本身和平精英这款游戏就属于枪战类游戏,这样形象的战斗服无疑增加了玩家的实战感,和体验感。其中最受欢迎的当属奇异狩猎者。个人觉得这款服装主要是以蜘蛛侠为原型设计的,整体服装颜色以红色和黑色为主,还有一个蜘蛛侠的专属面罩,增加了该形象的神秘感,非常的酷炫,至今为止都在游戏内进行过返场。最惹争议的服装类型是从SS11赛季开始的,可以看到SS11赛季的赛季上新还是很多的,除了很受欢迎的附魔团以外,主要都是以小裙子为主,且颜色色系都是白色和粉色,逐渐的开始偏向女性化,可能这样做的目的就是吸引更多的女性玩家,就是因为这一个小小的举动,也就成为了男性玩家退游的一个导火索。
噶腰子嘛? 噶!!!
1天两天! 三天4天
下雨了吗 下雨了
下雨了 记得跑回家哦
支付一时爽 一直支付一直爽
大爷心情不好 快来哄哄大爷
456小绵羊 小绵羊喜欢吃灰太狼
咱就说 是不是把
你说啥呀 我听不见
真人吃鸡 半只护理真人版吃鸡
是事实还是 123
再次分享 再次分享
转个贴看看 转个贴看看
发个贴子消磨时间 啦啦啦啦啦啦啦啦啦
😃😃😃12158151来来来来 5151515
天气真好 天空好蓝,万里无云
123木头人 11111111
11111 浏览器111213123
1111
再试一下 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fpan.baidu.com%2Fmbox%2Fhomepage%3Fshort%3DgeB5Lp5&urlrefer=cabf851753e72ac3b543a061f7bcba96 如果连接失效请在别的贴子发出来自己在点进去就OK了
测试一下,你就知道 羊与狼的恋爱和杀人-2019_BD日语中字(复制链接后保存网盘)http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fpan.baidu.com%2Fs%2F1F4APcw_wwp62q39n55OfLQ&urlrefer=7410b7ad8e727c92978247eb4f8cb9b2 提取码:1234
啊饿G6饿哦 默默
bux
2021年春节返乡过年 2021年2月5号到2月10号这几天从北京会乐安需要隔离吗?有谁知道乐安政府有发通告吗?
你说的是人话吗?为什么要这样 不要啊!,啥情况这是,为什么呀
上地的美女 藍***
你说说看 速度发是 打发斯蒂芬 1 2 3 4 5
啥情况
好日子 你说是是不是你
你说这是啥情况 你说这是啥情况
分享贴子 分享贴子
今天天气真不错 12848376187
gsx250r 两轮
巴拉巴拉小魔仙,哇咔啦全身变 迪迦奥特曼
有人脱坑后又回来了吗?是因为什么原因回来的啊?
1
下一页