程序员修炼之道阅读笔记02

本周阅读了程序员修炼之道(从小工到专家)的第四章《注重实效的偏执》、第五章《弯曲,或折断》、第六章《当你编码时》的相关内容,对其中一些值得我们学习的地方进行了摘录。

1.在制作任何软件时不免的会遇到很多输入的情况,而我们在编写的时候又有谁考虑过输入如是否合法的问题呢,在老师的要求,不断练习中才醒悟,开始对输入进行一点的限制,书中对使用DBC时,在输入时简单的列举输入域的范围是什么、边界条件是什么、例程允许交付是什么、更重要的是它不允许交付什么。这其实是一个非常重要的事情,如果输入不正确的数据,系统到底该如何处理,你无法确定用户将对系统输入什么,为了不使自己的程序奔溃,你必须学会,如何用一定的限制,限制用户输入正确的信息。

2.对程序进行异常的处理以及资源的分配:你无法估计程序在运行过程中会出现什么样的情况,为了不出现程序由于异常出现卡死的情况所以要根据自己的情况进行异常处理,要根据异常返回错误信息,是自己清晰地看到异常出现的具体位置,以及具体情况。另外要对资源的分派进行一定的控制,在分派某项资源的例程或对象应该负责接触该资源的分配。这一点也是老师一直在强调的无论是文件还是数据库,用完后就必须显示的关闭,不要无辜的占用资源通道,这对你陈旭的安全性以及资源的利用都是一个众多的问题。这些问题看似都不起眼,也比一定都会出现,但是一旦出现问题想要排查还是相当困难的,所以在今后的编程过程中,一定要养成规范的编程习惯。

3.解耦与德墨忒尔法则:把你的代码组织成最小的组织单位(模块),并限制他们之间的交互,如果随后出现于折中必须替换某个模块,其他模块仍能够继续工作,使用德墨忒尔法则使你的代码适要尽量做到用性更好、更健壮。其实德墨忒尔法是分而治之的一种具体体现。更改一个小的与外界几乎没有任何交互的模块比从打模块中修改要容易得多。所以在今后的编程中一定要尽量做到,一个小的模块只处理一件事。

4.靠巧合编程:最为开发者,我们也工作在雷区,每天都有成百上千的陷阱等着抓我们,我们应该警惕,不要得出错误的结论,我们应该避免靠巧合编程--依靠运气和偶然的成功,而要生死熟虑的编程。对于写程序用胸有成竹,切记,提笔就写依靠巧合编程。

转载于:https://www.cnblogs.com/1gaoyu/p/11030257.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL中多表查询:左连接、右连接、内连接、全连接、交叉连接

一、左连接,右连接,内连接关系 左连接:左表全部两个表交集(①②) 右连接:右表全部两个表交集(③②) 内连接:两个表交集(②) 二、结合具体例子看…

ORA-00972: identifier is too long问题解决

报错 解决: 查看你写的是否有中文 如果有中文,看是否有引号将中文引起来,用引号引起来后不报错

Linux系统性能查询命令

top命令(整机): 可以查看进程的cpu占用率,和内存占用率。uptime 是top的精简版只看整机,不看各进程。 load average: 0.00, 0.00, 0.00 表示系统1分钟,5分钟,15分钟的负载值,如果三…

Alter操作(修改列名,修改列数据类型,增加列,删除列,增加列且设为主键及对默认值操作)

一、mysql (增加列,删除列,修改列;增加,删除,修改列的默认值) 增加列,删除列,修改列 1、修改列的数据类型 alter table patient modify column mood int2、修改列名 …

Python可视化库matplotlib(基础整理)

https://blog.csdn.net/weixin_39777626/article/details/78598346 绘制基本曲线使用plot函数绘制函数曲线,可以调整plot函数参数配置曲线样式、粗细、颜色、标记等设置坐标轴(1.)spines移动坐标轴(2.)xlim方法设置坐标轴刻度取值范围(3.)xticks,yticks方法设置x,y轴…

GROUP BY和HAVING用法介绍

一、group by 和 having 1、满足“SELECT子句中的列名必须为分组列或列函数”,因为SELECT有group by中包含的列 2、having必须和group by一起用,且在group by后面 3、group by、having、order by的使用顺序:group by 、having、order by …

马蜂窝推荐系统容灾缓存服务的设计与实现

数据库突然断开连接、第三方接口迟迟不返回结果、高峰期网络发生抖动...... 当程序突发异常时,我们的应用可以告诉调用方或者用户「对不起,服务器出了点问题」;或者找到更好的方式,达到提升用户体验的目的。 一、背景 用户在马蜂窝…

1、两数之和

1、两数之和 难度简单9226收藏分享切换为英文关注反馈 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能…

Yii 2.0 GII 访问404错误

网上大部分都是普通的开启和配置资料 按照网上资料配置 访问localhost/index/php?rgii 总是提示404错误 解决方法如下: Yii基础版中的 web.php 代码如下 if (YII_ENV_DEV) {// configuration adjustments for dev environment$config[bootstrap][] debug;$config…

云监控指标介绍

监控指标含义MySQL的总连接数 允许同时连接DB的客户端的最大线程数 已经创建的连接数 Threads_created是为处理连接而创建的线程数 已经连接的连接数 Thread_connected当前打开的连接数 活跃连接数 Threads_running官方说法“没有sleep的线程数”。激活的连接数&#xff…

Vivado Bit文件压缩

前言 Vivado编译生成的Bit文件太大,想要小一点该咋办呢?那么就需要给bit文件瘦身。 流程 直接在约束文件xdc中添加下述语句即可: set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design] 未压缩前 压缩后 根据工程不同,还…

Mac安装webpack步骤,失败npm ERR! Error: EACCES: permission denied, access,亲测有效

安装webpack步骤 Mac在终端先获取root权限 在mac下依赖包要写入系统重要文件夹里,由于没有先获取root权限所以写入失败,导致安装失败。失败显示: npm ERR! code EACCES npm ERR! syscall access npm ERR! path /usr/local/lib/node_modules…

iview -- vue modal 显示到最顶层 层级

给想要显示到顶层的modal 设置class属性 .my-modal-parent {position: fixed; // 浮动z-index: 999999; } 转载于:https://www.cnblogs.com/mafeng/p/10885471.html

Mac安装webpack报错gyp ERR! configure error gyp ERR! stack Error: `gyp` failed with exit code: 1解决

安装webpack ,报错提示 gyp ERR! configure error gyp ERR! stack Error: gyp failed with exit code: 1 gyp ERR! stack at ChildProcess.onCpExit (/usr/local/lib/node_modules/cnpm/node_modules/node-gyp/lib/configure.js:345:16) gyp ERR! stack a…

黑客攻防技术宝典web实战篇:攻击应用程序逻辑习题

猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案。 1. 何为强制浏览?可以通过它确定哪些漏洞? 强制浏览包括避开浏览器导航对应用程序功能访问顺序实施的任何限制。应使用强制浏览测试多阶段…

111111

表单控件在实际开发中是非常常见的。特别是对于用户信息的提交,需要大量的表单。 Vue中使用v-model指令来实现表单元素和数据的双向绑定。 案例的解析: 当我们在输入框输入内容时 因为input中的v-model绑定了message,所以会实时将输入的内容传…

野性的呼唤

记得之前老师就给我推荐过这本书,一直没机会去读它,正好这次利用闲暇时间,探究这本书讲述的故事。《野性的呼唤》这本书的主角是一条狗,名叫巴克,作者以第一人称,拟人化的手法,讲述他从一只富人…

[BZOJ2655] calc

题目链接 BZOJ:https://www.lydsy.com/JudgeOnline/problem.php?id2655 Solution 设\(f_i\)表示长度为\(i\)的序列个数,\(g_{i,x}\)表示含有\(x\)的序列个数,注意这里不考虑顺序,顺序答案直接乘\(n!\)就好了。 首先很显然可以得到…

npm搭建cli脚手架不成功

npm 装脚手架不成功,可以尝试删文件夹 C盘-users-administrator-AppData-Roaming 下面的 npm-cache即可

递归与栈的关系

递归与栈的关系: 可是为何执行了900多次就出错了呢?还说超过了最大递归深度现在,为什么要限制呢? 通俗来讲,是因为每个函数在调自己的时候还没有退出,占内存,多了肯定会导致内存崩溃。 本质上讲…