首页 > 编程语言 >程序员修炼之道 从小工到专家 阅读笔记02

程序员修炼之道 从小工到专家 阅读笔记02

时间:2023-03-18 20:22:47浏览次数:32  
标签:02 断言 数据 小工 模块 程序员 配平 应该 异常

断言式编程:
1、如果它不可能发生,用断言确保它不会发生。

assert(string != NULL)

断言里写的为真的条件,当不为真时触发断言,程序退出。

2、断言检查的是决不应该发生的事情,而不是错误处理。

3、断言应该一直开着,不要在线上环境关掉它。

断言对应的是一种强提示,它迫使我们必须遵守。像是单元测试,我们通常都使用断言的形式进行检查。


何时使用异常:
1、异常很少应作为程序的正常流程的一部分使用,异常应该保留给意外情况。如果移除了所有的异常处理器,代码就无法运行,那说明异常正在被用于非异常情况中。

2、是否应该使用异常取决于实际情况。比如打开文件,文件不存在,是否应该发生异常?如果文件应该在那里,那么异常就有正当理由。如果不确定文件是否在那里,返回错误就可以了。

怎样配平资源:
1、对于资源(内存、事务、现成、文件、定时器等)的管理要有始有终,你分配了对应的资源,就需要考虑对应的解除逻辑。要有始有终。

2、嵌套的资源分配,应该使用与分配次序相反的顺序进行解除。

3、异常的配平需要避免违反 DRY 原则。例如文件打开的异常情况,会导致 try..catch 有两条路径,那如何避免在正常流程和 catch 流程都处理 error 情况呢?C++ 可以依赖对象自动析构的特性,Java 可以依赖 finally子句。

4、当无法配平资源时,需要设定一个规则,决定谁为某个聚集数据结构中的数据负责,以及如何负责。这里有点类似引用计数方案,无引用时释放。

5、自动化检查资源配平状态,可以依赖一些三方工具。


解耦与得墨忒耳法则:
1、把你的代码组织成最小单位(模块),并限制他们之间的交互。如果随后必须替换某个模块,其他模块仍能够继续工作。

2、应使耦合减至最少。对象间直接的横贯关系,有可能很快带来依赖关系的组合爆炸。比如对某个模块的“简单”改动会传遍系统中的一些无关模块。

3、函数的得墨忒耳法则,它规定了某个对象的任何方式都应该只调用属于以下情形的方法:

它自身
传入该方法的任何参数
它创建的任何对象
任何直接持有的组件对象
4、得墨忒耳法则的好处是它使得代码的适用性更好,更健壮,但这也有一定的代价。如果某些解耦的操作很复杂,或者解耦带来某些时间和空间的重大开销,这时就需要根据实际情况考虑,可以暂时舍弃该法则。

元程序设计:
1、元数据是关于数据的数据,即对应用进行描述的数据。典型情况,元数据在运行时,而不是编译时被访问和使用。

2、我们想要让我们的系统变得高度可配置,像是屏幕颜色,提示文本等,这些应该作为配置项而不是作为代码集成到项目中。

3、以声明方式思考(规定要做什么,而不是怎么做),并创建高度灵活的可适应的程序。结合元数据就是,将抽象放进代码,细节放进元数据。

4、Enterprise Java Beans 是一个用于简化分布式、基于事务的环境中的编程框架。它处理了不同机器、在不同数据库供应商之间,不同线程及复杂平衡的事务。它的使用只需我们编写一个 bean,并将其放到 bean container 中。

5、更好的协作式配置是让应用自身适应其环境,进行动态配置。

 

标签:02,断言,数据,小工,模块,程序员,配平,应该,异常
From: https://www.cnblogs.com/y1126/p/17231653.html

相关文章

  • 2022.3.18学习总结
    解决Goland调试错误问题解决网站https://juejin.cn/post/7198350384337911867总结:goland的调试工具dlv版本太旧,需要在GitHub下载新的下载下的dlv.exe在GOPATH中,......
  • 2023省选16天
    打不了,但是停课。\(DAY\1\(2023/3/18)\)模拟赛日。上午模拟赛,六机房(停课机房)早模过了,所以在七机房。T1是字符串,一眼\(hash\),手玩了个结论,复杂度\(O(n)\)感觉没啥问题......
  • 会声会影2023旗舰版视频加水印怎么加 视频水印怎么处理掉
    为了防止视频被盗用,很多剪刀手都会在剪辑结束时为视频添加水印。那视频加水印怎么加,视频水印怎么处理掉?本文将会和大家分享一些会声会影2023旗舰版剪辑的小技巧,帮助大家快速......
  • 会声会影2023对比会声会影2022变化 以及功能对比
    全新会声会影2023版本现已登场,小伙伴们相信已经急不可待地想知道2023版到底有哪些新功能。对比会声会影2022版本,会声会影2023版本有没有功能的增强?事不宜迟,现在就让我们一起......
  • 会声会影2023旗舰版新增七大功能介绍
    2023年开端,我们不仅迎来了疫情的结束,也迎来了会声会影的重磅更新!2023年会声会影带来了七大新功能,其中包含了瞩目的标题与转场的更新,另外也进行了多项功能的增强,包括GIF创作......
  • 数据结构-->链表_02
    本期的链表继续进行,上期我们完成了链表的增加和删除。现在接下来,我们进行链表的查改与优化头文件“SList.h”#include<stdio.h>#include<assert.h>#include<stdlib.h>typ......
  • 每日总结--2023/3/17
    课程:计算机网络概率论web学习内容:完成了一个个人介绍的web页面及实验报告继续学习了数据链路层的相关内容完成了每日打卡app记录时间的功能 ......
  • 每日总结--2023/3/18
    周六休息一天学习内容:完成了计算机网络的部分作业完善了每日打卡app的细节修复了北京铁道系统的录入功能bug优化了铁道系统数据库表的......
  • Spring Study -lesson11-动态代理扩展-2023-03-18
    一个动态代理接口类,可以作为工具接口,便于不同程序公共使用packagecom.feijian.Demo02;importcom.feijian.Demo.Rent;importcom.sun.corba.se.impl.ior.OldJIDLObje......
  • Spring Study -lesson11-动态代理(反射机制)-2023-03-18
    第一:接口类(增删改查)packagecom.feijian.Service;publicinterfaceUserService{publicvoidaddUser();publicvoidupdateUser();publicvoiddelet......