首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏dino.c的专栏

    了解模板化控件(10):原则技巧

    原则 推荐以符合以下原则的方式编写模板化控件: 选择合适的父类:选择合适的父类可以节省大量的工作,从UWP自带的控件中选择父类是最安全的做法,通常的选择是Control、ContentControl、ItemsControl 小技巧 对于复杂的控件或控件库项目,以下技巧可能对你有帮助。 3.1 partial class 在编写模板化控件时,依赖属性最大的缺点会暴露无遗:它太复杂了。

    1.3K30发布于 2019-01-18
  • 来自专栏烟草的香味

    6大设计原则之开闭原则

    开闭原则的定义 开闭原则的定义: 一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭.即一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化. 开闭原则的好处 开闭原则是一个最基本的原则,另外五个原则都是开闭原则的具体形态,是指导设计的工具和方法,而开闭原则才是精神领袖. 开闭原则有利于进行单元测试 开闭原则可以提高复用性 开闭原则可以提高可维护性 面向对象开发的要求 开闭原则的使用 1.抽象约束 通过接口或抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中不存在的 不能有两个不同的变化出现在同一个接口或抽象类中.封装变化,找出预计的变化或不稳定的点,为这些变化点创建稳定的接口,准确的讲是封装可能发生的变化.23个设计模式都是从各个不同的角度对变化进行封装的. ---- 开闭原则也只是一个原则 ,实现拥抱变化的方法很多,并不局限于这6大设计原则,但是遵循着6大设计原则基本上可以应对大多数变化.

    1.4K50发布于 2019-07-25
  • 来自专栏全栈程序员必看

    设计模式之6原则(6)开闭原则

    开闭原则(OCP) 是 面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之中的一个,其他非常多的设计原则都是实现开闭原则的一种手段。 开闭原则中“开”,是指对于组件功能的扩展是开放的,是同意对其进行功能扩展的;开闭原则中“闭”,是指对于原有代码的改动是封闭的,即不应该改动原有的代码。 实现开闭原则的关键就在于“抽象”。把系统的全部可能的行为抽象成一个抽象底层,这个抽象底层规定出全部的详细实现必须提供的方法的特征。 这就要求我们在设计的时候,要很清楚地了解用户需求,推断需求中包括的可能的变化,从而明白在什么情况下使用开闭原则。 在20世纪90年代,开闭原则被广泛的又一次定义因为抽象化接口的使用,在这中间实现能够被改变,多种实现能够被创建,而且多态化的替换不同的实现。相比梅耶的使用方式,多态开闭原则的定义倡导对抽象基类的继承。

    61221编辑于 2022-07-09
  • YashanDB索引设计原则优化实战技巧

    本文围绕YashanDB数据库索引的设计原则及优化实战,深入分析索引工作原理、存储结构及调优策略,旨在帮助用户充分发挥索引的性能优势,提升系统整体性能。 YashanDB索引类型存储结构解析YashanDB支持以BTree为核心的索引类型,借助B树的多叉平衡查找结构实现数据的有序存储和快速访问。 索引设计原则1. 合理选择索引列索引类型索引应建立在业务查询频繁且选择性较高的列上,特别是作为过滤条件或连接条件的字段。如外键列建议创建索引以减少锁冲突。 分类管理分区索引设计YashanDB支持分区索引设计,分为本地分区索引和全局索引。合理使用本地分区索引,确保索引分区表分区一致,提高查询时的分区裁剪效率,减少访问数据量,提升查询性能。 索引优化实战技巧1. 统计信息维护优化器支撑统计信息对优化器生成合理执行计划至关重要。YashanDB支持多种统计信息收集方式,包括动态采样、并行统计和手动触发统计信息刷新。

    23910编辑于 2025-09-05
  • 来自专栏开源技术小栈

    最佳PHP代码审查关键原则实践技巧

    核心原则 1. 功能检查:代码是否完成了它的工作? 代码审查最重要的方面是确保代码实现了其预定目的。重点关注代码逻辑,从接收输入到产生输出的执行流程。 开始直接将代码项目的需求或规范进行比较。您是否已实现所有必要的功能?是否有不正确的行为或缺少任何东西?接下来,仔细地逐步执行代码的逻辑。执行是否遵循从接收到的输入到最终输出的合理路径? PSR等社区标准最大限度地减少了新加入项目的开发人员的学习曲线,并提高了不同开发工具的兼容性。 在代码审查期间,仔细评估变量和函数命名。 它们清楚地将SQL结构用户提供的数据分开,允许数据库安全地处理数据并消除SQL注入尝试。删除危险字符(例如,<script> 标签以防止XSS)并强制执行规则以确保输入符合你的期望。 使用数据库集成的分析工具(例如,MySQL的慢速查询日志)或Blackfire/New Relic等扩展来识别最有效的优化。

    62210编辑于 2024-05-11
  • 来自专栏互联网大杂烩

    6大设计原则

    打算用一句话概括每一个设计原则 单一职责原则 一个类只负责一项职责,有且仅有一个原因引起类的变更。 里氏替换原则 所有引用基类的地方必须能透明地使用其子类对象。 依赖倒置原则 高层模块不应该依赖低层模块,两者都应该依赖其抽象,抽象不依赖细节,细节应该依赖抽象。 也就是面向接口编程。 接口隔离原则 类间依赖应该建立在最小接口上。 开闭原则 一个软件实体如类,模块和函数,应该对扩展开放,对修改关闭。

    39330发布于 2018-08-22
  • 来自专栏烟草的香味

    6大设计原则之接口隔离原则

    接口隔离原则的定义 什么是接口. 接口隔离原则的实现 比如现在有一个人,他身兼数职,是一个老师,要教书,是一个学生,要学习,类图如下: ? 接口的规范约束 接口要尽量小,这是接口隔离原则的核心定义,但是"小"是有限度的,首先就是不能违背单一职责原则. . ---- 接口隔离原则就是对接口的定义,同时也是对类的定义,接口和类尽量使用原子接口或原子类来组装.

    87310发布于 2019-07-25
  • 来自专栏烟草的香味

    6大设计原则之里氏替换原则

    降低代码的灵活性.子类必须拥有父类的属性和方法,让子类自由的世界中多了些约束 增强了耦合性.当父类的常量、变量和方法被修改时,需要考虑子类的修改,有时更会带来非常糟糕的结果--大段代码需要重构 里氏替换原则的定义 里氏替换原则的规范(继承的规范) 1.子类必须完全实现父类的方法 例如有一个打枪的游戏,类图如下 ? 其 Soldier 代码如下 ? 虽然子类方法父类方法同名,但不是覆写父类方法,而是重载,因为输入参数不同 父类的参数范围小,当调用子类 doSomething方法时,若参数为HashMap调用父类方法,若为Map调用子类方法 要是反过来 ,子类的 参数比父类范围下,就违背了里氏替换原则 4.覆写或实现父类的方法是输出结果可以被缩小 这个也不难理解,也就是说父类方法返回的是Map时,子类可以返回HashMap 但是反过来,父类返回的是HashMap ,而子类返回Map类型就违背了里氏替换原则 采用里氏替换原则的好处 增强程序的健壮性,版本升级是也可以保持非常好的兼容性.即使增加子类,原有的子类还可以继续运行.在实际项目中,每个子类对应不同的业务含义

    80320发布于 2019-07-25
  • 来自专栏烟草的香味

    6大设计原则之依赖倒置原则

    依赖倒置原则的定义 依赖倒置原则的原始定义如下: High level modules should not depend upon low level modules. 依赖倒置原则在Java语言中表现为: 模块间的依赖通过抽象产生,实现类之间不发生直接依赖,其依赖关系是通过接口或抽象类产生的 接口或抽象类不依赖于实现类 实现类依赖接口或抽象类 依赖倒置原则的好处 采用依赖倒置原则可以减少类间的耦合性 任何类都不应该从具体类派生 尽量不要覆写基类的方法 结合里氏替换原则(父类出现的地方,子类就可以出现),例如,接口负责定义public属性和方法,并且声明与其他对象的依赖关系,抽象类负责公共构造部分的实现 ,实现类精确的实现业务逻辑同时在适当的时候对父类进行细化 ---- 依赖倒置原则6个设计原则中最难以实现的原则,他是实现开闭原则的重要途经,依赖倒置原则没有实现,就别想实现对扩展开放,对修改关闭.在项目中 ,只要记住是"面向接口编程"就基本抓住了依赖倒置原则的核心

    69030发布于 2019-07-25
  • YashanDB数据库设计的核心原则技巧

    尤其是在涉及到海量数据处理时,设计不合理的数据库无疑会导致查询效率低下系统崩溃等问题。因此,深入理解数据库设计的核心原则技巧是每个从业者必须具备的技能。核心设计原则1. 使用规范化原则,开发者可以确保数据的完整性和连接效率。2. 事务管理ACID特性事务管理是保证数据库一致性的关键因素。 数据分区分布式存储在处理大规模数据时,数据分区分布式存储是不可或缺的技术。YashanDB支持表数据的分区,可以根据分区键将数据分散到不同存储空间,实现负载均衡、提高查询性能。 分库分表设计是保证系统高可用、高并发的重要技巧,合理规划分布方案能够有效利用系统的存储和计算能力。5. 备份和恢复策略数据备份恢复是确保数据安全的必要手段。 通过应用上述设计原则技巧,可以极大地提升YashanDB的应用价值运行效率。

    15110编辑于 2025-10-25
  • 来自专栏AI算法札记

    塑胶产品设计的基本技巧原则

    本文从涉及产品设计过程中的原料选择、加工过程选择、强度考虑、模具设计等方面,介绍了塑胶产品设计的基本技巧原则。 有时在相同的操作条件下,塑料会呈现出金属完全不同的表现。因此,对浇铸金属经济有效的功能设计,如果仓促地用於于塑料,将会很容易失败。 6.加强肋 一般来说,部件的刚性可用以下方法增强: 增加壁厚; 增大弹性模量(如加大增强纤维的含量); 设计中考虑加强肋。 如果设计用的材料不能满足所需刚性,则应选择具有更大弹性模量的材料。

    75560编辑于 2022-08-02
  • 来自专栏烟草的香味

    6大设计原则之单一职责原则

    单一职责原则 如果有一个用户管理类,类图如下 ? 其实,在实际使用中我们更倾向于使用两个不同的接口: 一个IUserBO,一个IUserBiz 单一职责原则定义 应该有且仅有一个原因引起类的变更 单一职责原则的好处: 类的复杂性降低,实现什么职责都有清晰明确的定义 可读性提高了,当然更容易维护了 变更引起的风险降低.变更是必不可少的,如果接口的单一职责做的好,一个接口修改只对相应的实现类有影响,对其他类无影响,这对系统的扩展性、维护性都有非常大的帮助 ---- 单一职责原则适用于接口 、类,同样也适用于方法. ---- 单一职责原则是非常优秀的,但是在实际使用中受很多因素的制约 建议,接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化

    43830发布于 2019-07-25
  • 来自专栏代码世界

    6大设计原则总结

    6大设计原则总结 一、单一职责原则  单一职责原则:英文名称是Single Responsiblity Principle,简称是SRP。定义:应该有且仅有一个原因引起类的变更。 覆盖或实现父类的方法时输入参数可以被放大; 如果父类的输入参数类型大于子类的输入参数类型,会出现父类存在的地方,子类未必会存在,因为一旦把子类作为参数传入,调用者很可能进入子类的方法范畴; 子类中方法的前置条件必须超类中被覆写的方法的前置条件相同或者更宽松 迪米特法则对类的低耦合提出了明确的要求,其包含以下4层含义: 只和朋友交流 --- 迪米特法则还有一个英文解释是:Only talk to your immedate friends(只直接的朋友通信 注意:一个类只和朋友交流,不与陌生类交流,不要出现getA().getB().getC().getD()这种情况(在一种极端的情况下允许出现这种访问,即每一个点后面返回类型都相同),类类之间的关系是建立在类间的 一个展示数据的列表,按照原有的需求是6列,突然有一天要增加1列,而且这一列要跨N张表,处理M个逻辑才能展现出来,这样的变化是比较恐怖的,但还是可以通过扩展来完成变化,这就要看我们原有的设计是否灵活。

    97190发布于 2018-04-12
  • 来自专栏架构之家

    代码重构的原则技巧

    要写出高质量代码,我们就需要掌握一些更加细化、更加能落地的编程方法论,这就包含面向对象设计思想、设计原则、设计模式、编码规范、重构技巧等。 单一职责原则告诉我们实现类要职责单一;里氏替换原则告诉我们不要破坏继承体系;依赖倒置原则告诉我们要面向接口编程;接口隔离原则告诉我们在设计接口的时候要精简单一;迪米特法则告诉我们要降低耦合。 分离对象的数据结构行为 备忘录 在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象为先前的状态 用于对象的备份恢复 命令 将不同的请求封装成对应的命令对象 listen、build/publish、encode/decode、submit/commit、push/pull、enter/exit、expand/collapse、encode/decode 重构技巧 空引用的问题在Java中无法避免,但可以通过代码编程技巧(引入空对象)来改善这一问题。

    1.1K30编辑于 2022-07-12
  • 来自专栏Coco的专栏

    Web 动画原则技巧浅析

    在 Web 动画方面,有一套非常经典的原则 -- Twelve basic principles of animation,也就是关于动画的 12 个基本原则(也称之为迪士尼动画原则),网上对它的解读延伸的文章也非常之多 类似的,看看这个购物车动画,运用了非常多的小技巧,其中之一就是,车在向前冲之前会后退一点点进行一个蓄力动作,整个动画的感觉明显就不一样,它让动画看起来更加的自然: ? Web 动画的一些常见误区 当然,上述的一些技巧源自于迪士尼动画原则,我们可以将其中的一些思想贯穿于我们的 Web 动画的设计之中。 主要有下面几点: 增强动画页面元素之间的关联性 不要为了动画而动画,要有目的性 动画不要过于缓慢,否则会阻碍交互 增强动画页面元素之间的关联性 这个是一个常见的问题,经常会看到一些动画主体之间没有关联性 在我们的交互过程中,适当的增加过渡动画,能够很好的让用户感知到页面的变化。类似的还有一些滚动动画。丝滑的滚动切换比突兀的内容明显是更好的体验。

    1.1K30发布于 2021-06-29
  • 来自专栏6G

    6G网络架构设计原则是怎样的?

    6G的设计总共有5个设计原则,分别是至简原则、融合原则、柔性原则、内生原则和开放原则。这些原则将引导我们实现从5G到6G的平稳过渡,同时满足日益多样化的新兴场景和技术创新的需求。 虽然5G已简化架构,相比4G层级更少、服务化更强,但6G将进一步深化服务化、普及MEC、整合新技术、运用AI运维、优化协议,实现更极致的扁平化、灵活性智能化。 除了上述设计原则外,内生能力也是6G网络架构的重要支柱。6G网络体系架构需要融合智能、算力和安全等内生能力,实现网络的无所不达、算力的无处不在、智能的无所不及。 在这些设计原则的指导下,6G网络架构的构建将包括多个层次:网络资源和基础设施层、网络功能层、服务能力开放层、管理编排和内生赋能等。这些层次相互协同工作,共同支撑起6G网络的高效运行。 服务能力开放层 这一层主要是负责对下层的网络功能进行提取、封装和组合,为网络内部业务或外部应用提供可开放的能力或服务。

    41510编辑于 2024-04-24
  • 来自专栏全栈程序员必看

    Python6大设计原则

    内容总览 六大设计原则都有哪些 一、单一职责原则 二、里氏替换原则 三、依赖倒置原则 四、接口隔离原则 五、迪米特法则 六、开放封闭原则 内容详解 一、单一职责原则 单一职责原则:英文名称是Single 覆盖或实现父类的方法时输入参数可以被放大; 如果父类的输入参数类型大于子类的输入参数类型,会出现父类存在的地方,子类未必会存在,因为一旦把子类作为参数传入,调用者很可能进入子类的方法范畴; 子类中方法的前置条件必须超类中被覆写的方法的前置条件相同或者更宽松 迪米特法则对类的低耦合提出了明确的要求,其包含以下4层含义: 只和朋友交流 — 迪米特法则还有一个英文解释是:Only talk to your immedate friends(只直接的朋友通信。) 注意:一个类只和朋友交流,不与陌生类交流,不要出现getA().getB().getC().getD()这种情况(在一种极端的情况下允许出现这种访问,即每一个点后面返回类型都相同),类类之间的关系是建立在类间的 一个展示数据的列表,按照原有的需求是6列,突然有一天要增加1列,而且这一列要跨N张表,处理M个逻辑才能展现出来,这样的变化是比较恐怖的,但还是可以通过扩展来完成变化,这就要看我们原有的设计是否灵活。

    55730编辑于 2022-07-21
  • 来自专栏小樱的经验随笔

    设计模式六大原则6):开闭原则

    开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定灵活的系统。 也就是说,只要我们对前面5项原则遵守的好了,设计出的软件自然是符合开闭原则的,这个开闭原则更像是前面五项原则遵守程度的“平均得分”,前面5项原则遵守的好,平均分自然就高,说明软件设计开闭原则遵守的好;如果前面 在上图中,设计1、设计2属于良好的设计,他们对六项原则的遵守程度都在合理的范围内;设计3、设计4设计虽然有些不足,但也基本可以接受;设计5则严重不足,对各项原则都没有很好的遵守;而设计6则遵守过渡了,设计 5和设计6都是迫切需要重构的设计。          写出来的目的一方面是对这六项原则系统地整理一下,一方面也广大的网友分享,因为设计模式对编程人员来说,的确非常重要。

    1.1K70发布于 2018-04-08
  • 来自专栏机器学习/数据可视化

    pandas技巧6

    本篇博文主要是对之前的几篇关于pandas使用技巧的小结,内容包含: 创建S型或者DF型数据,以及如何查看数据 选择特定的数据 缺失值处理 apply使用 合并和连接 分组groupby机制 重塑reshaping 透视表使用 ---- 创建数据 S型数据 import numpy as np import pandas as pd pd.Series([1, 3, 5, np.nan, 6, 89]) # 普通形式 pd.date_range('20190924', periods=6) # 时间间隔形式 DF型数据 指定3个参数 values index columns pd.DataFrame(np.random.randn (6,4), index=dates, columns=list("ABCD")) df pd.DataFrame({'A': 1., # 某列的值相同

    3.4K10发布于 2021-03-02
  • 来自专栏小鑫同学编程历险记

    【程序设计】6大设计原则之接口隔离原则

    这样的接口定义是不利于扩展的,也将对后期的维护带来困扰,我们将通过示例来演示符合接口隔离原则带来的好处。 概念: 接口隔离原则的定义: 客户端不应该被迫依赖于它不适用的方法 接口隔离原则的要求: 将臃肿庞大的接口拆分成更小的和更加具体的接口,保证客户端只得到自己需要的方法 案例: 需求: 设计HomePage 功能支持点击事件:可以跳转到EditPage页面 功能支持双击事件:可以双击后退出程序 设计EditPage页面 功能支持双击事件:可以双击后选择文本 功能支持长按事件:可以长按后选择全部文本 违反原则实现 选择文本"); } onLongPress(): void { console.log("触发长按事件,选择文本"); } } 说明: 通过上面的示例可以看得出没有页面都存在一个自己无关的方法需要实现 按照合理的设计进行符合接口隔离原则的拆分对实现代码高内聚,低耦合将变得尤为重要。

    41420编辑于 2022-12-26
领券