《程序员修炼之道:从小工到专家》阅读笔记03

《程序员修炼之道:从小工到专家》阅读笔记03

第六章 当你编码时

  1. 靠巧合编程应该避免靠巧合编程,避免依靠运气和偶然的成功。而要深思熟虑的编程。
  2. 怎样深思熟虑的编程:1)总是意识到你在做什么2)不要盲目的编程3)按照计划行事4)依靠可靠的事物5)为你的假定建立文档6)不要只是测试你的代码,还要测试你的假定7)为你的工作划分优先级。把时间花在重要的方面。
  3. 重构:周遭所见,皆是变异与衰败。代码需要演化:他不是静态的事物!不要对改动犹豫不决
    代码若具有如下特征,则应该考虑重构:1)重复2)非正交的设计3)过时的知识4)性能
    就其核心而言,重构就是重新设计:怎样进行利大于弊的重构:1)不要试图在重构的同时增加功能2)在开始重构之前,确保你拥有良好的测试。 (尽可能经常运行这些测试,如果你的改动破坏了任何东西,你很快可以知道)
  4. 易于测试的代码:单元测试< 测试你的软件,否则你的用户就得测试 >

第七章 在项目开始之前

  1. 需求只坑完美,不是在没有什么需要增加,而是在没有什么需要去掉时达到的。不要搜集需求而要挖掘他们!与用户一同工作,以像用户一样思考!
  2. 解开不可能解开的谜题
    解开谜题的关键:确定加给你各种约束,并确定你确实拥有自由度
    < 不要在盒子外思考,要找到盒子 >
    我们可以先确定最为严格的约束,然后再在其中考虑其余约束很多时候,对需求的重新诠释能让整个问题全部消失 ------ 就像戈尔迪斯结
  3. 等你准备好:有时犹豫的人会得以保全
    < 倾听反复出现的疑虑,等你准备好再开始 >
  4. 规范陷阱:编写程序规范就是吧需求规约到程序员能够接管的程度的过程
    结构化程序设计 ------ 拥有长久的生命

第八章 注重实效的项目

  1. 注重实效的团队:有了注重实效的开发者,让他们工作在能够发挥自身能力的环境中,他们很快就会发展并提炼他们自己的、有效的团队动力机制
  2. 无处不在的自动化:软件开发人员常常会使用最糟糕的工具来完成工作
  3. 无情的测试:
    < 早测试,常测试,自动测试 >
    < 要到通过全部测试,编码才算完成 >
    < 通过”蓄意破坏“测试你的测试>
    < 测试状态覆盖,而不是代码覆盖 >
    < 一个 bug只抓一次 >
  4. 全部都是写好记性不如烂笔头:把英语当做又一种编程语言

个人感受:

靠巧合编程应该避免靠巧合编程,避免依靠运气和偶然的成功。而要深思熟虑的编程。

看到这里,我不禁想问,套用模板的编程算是巧合编程吗?答案是肯定的,因为没有经过你自己的深思熟虑的编程都是巧合编程。就像老师说的那样,总有一天你接到一个项目,你找不到对应的模板时,你该怎么办?

代码的重构:不要对改动犹豫不决,我自己本身就有这样的问题,废了九牛二虎之力码出来一个程序,老师却提出了新的要求,这时候我就开始犹豫了,怎么改动呢?从哪里开始改呢?

代码若具有如下特征,则应该考虑重构:1)重复2)非正交的设计3)过时的知识4)性能
就其核心而言,重构就是重新设计:怎样进行利大于弊的重构:1)不要试图在重构的同时增加功能2)在开始重构之前,确保你拥有良好的测试。 (尽可能经常运行这些测试,如果你的改动破坏了任何东西,你很快可以知道)

转载于:https://www.cnblogs.com/fuheishi/p/11061232.html

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

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

相关文章

PyTorch中Tensor的基本用法与动手学深度学习的预备知识

同个人博客网站 : www.serendipper-x.cn &#x1f433;&#x1f433; 第一部分是PyTorch中有关Tensor的一些基本用法&#xff0c;因为之前并没有系统学习过PyTorch&#xff0c;所以现在看书的同时慢慢学习PyTorch的知识 第二部分是原书的知识和一些自己的理解 一、PyTorch 中…

计算机网络——物理层设备

1.中继器 \qquad信号在传输过程中会有衰减&#xff0c;导致数据失真&#xff0c;所以我们需要对信号进行再生和还原&#xff0c;使其与原数据相同。这就需要中继器的发挥作用。 2.中继器的结构 \qquad中继器的两端&#xff1a;两端的网络部分是网段而不是子网&#xff0c;适用…

重磅!2020国家科学技术奖全名单公布!

来源&#xff1a;软科 2021年11月3日&#xff0c;2020年度国家科学技术奖励大会在人民大会堂正式召开。备受关注的国家最高科学技术奖&#xff0c;授予了中国航空工业集团有限公司顾诵芬院士和清华大学王大中院士。国家最高科学技术奖自2000年正式设立&#xff0c;是中国科技界…

PHP 常用数据库操作

1.建立与数据库服务器的连接&#xff08;前提数据库服务器必须打开&#xff09; 第一个参数&#xff1a;本地地址 第二个参数&#xff1a;数据库账户 第三个参数&#xff1a;数据库密码 第四个参数&#xff1a;数据库名称 $connection mysqli_connect(127.0.0.1, root, 密码, …

计算机网络——数据链路层的概述

1.数据链路层的基本概念 \qquad结点&#xff1a;主机、路由器 \qquad链路&#xff1a;网络中两个结点之间的物理通道&#xff0c;链路的传输介质主要有双绞线&#xff0c;光纤&#xff0c;微波。分为有线链路和无线链路。 \qquad数据链路&#xff1a;网络中两个结点之间的逻辑通…

中国科学家证明凯勒几何两大核心猜想

来源&#xff1a;中国科学报中国科学技术大学几何物理中心创始主任陈秀雄与合作者程经睿在偏微分方程和复几何领域取得“里程碑式结果”。他们解出了一个四阶完全非线性椭圆方程&#xff0c;成功证明了“强制性猜想”和“测地稳定性猜想”这两个国际数学界60多年悬而未决的核心…

基于交换机的PC端网络通信

1. 通信环境 \qquad两台电脑&#xff1a;一台是windows10操作系统&#xff0c;一台是Ubuntu操作系统&#xff1b; \qquad一个5口的交换机和配套的交换机电源线 \qquad两根网线 2.实现的目的 \qquad通过上述的通信环境&#xff0c;基于交换机&#xff0c;可以实现两台不同操作系…

深度学习发展下的“摩尔困境”,人工智能又将如何破局?

来源&#xff1a;AI科技大本营编译&#xff1a;禾木木前不久&#xff0c;微软和英伟达推出包含5300亿参数的语言模型MT-NLG&#xff0c;这是一款基于 Transformer 的模型被誉为“世界上最大、最强的生成语言模型”。毫无疑问&#xff0c;这是一场令人印象深刻的机器学习工程展示…

计算机网络——差错控制

1.传输过程中出现错误的原因&#xff1f; \qquad传输中的差错主要是由噪声引起的&#xff0c;噪声主要分为&#xff1a;全局性噪声&#xff0c;比如线路电气特性所产生的随机噪声&#xff1b;局部性噪声&#xff0c;比如短暂性的冲击噪声。 2.差错的原因&#xff1f; \qquad差…

Exp8 Web基础

一、实验过程 1.Web前端&#xff1a;HTML基础 &#xff08;1&#xff09;kali默认已安装Apache&#xff0c;使用 service apache2 start 命令打开Apache服务 &#xff08;2&#xff09;在浏览器输入 127.0.0.1 &#xff0c;如果可以打开Apache的默认网页 &#xff08;3&#xf…

linux的基础知识——协议和网络应用程序设计模式

1.什么是协议&#xff1f; 协议&#xff0c;即规则。网络通信中的协议&#xff0c;即数据传输和数据解释的规则。 2.一些典型的协议 传输层&#xff1a;常见的有TCP/UDP协议 应用层&#xff1a;HTTP协议&#xff0c;FTP协议 网络层&#xff1a;IP协议&#xff0c;ICMP协议&a…

linux的基础知识——模型结构和数据包的封装

1.OSI参考模型和TCP/IP参考模型 2.TCP/IP模型 TCP/IP网络协议分为四层&#xff1a;应用层&#xff0c;传输层&#xff0c;网络层&#xff0c;链路层 3.数据包的封装 数据要想传输必须经过封装。两台电脑通过TCP/IP协议通讯过程如下&#xff1a;

人工智能发展时间轴

来源&#xff1a;人机与认知实验室时间人物事件意义1633Rene Descartes发表著作《论人》提出灵魂存在于大脑的松果体中1714Gottfried Wilhelm Leibniz《单子论》一切知识都能通过理性思考获得。发现微积分&#xff0c;并开发了一套更为适用的记号方法。1739David Hume《人性论》…

linux的基础知识——以太网帧格式

1.路由器寻路 路由器根据自身的路由表&#xff0c;寻找下一个路由节点。 2.数据包的封装结构 3.以太网帧 以太网帧是在链路层&#xff0c;链路层的主要职能是检错和校验&#xff0c;以太网帧格式如下&#xff1a; 其中&#xff0c;目的地址和源地址是网卡中的硬件地址&#…

吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设置浮动和偏移

<!DOCTYPE html> <html><head><title>菜鸟教程(runoob.com)</title> <meta name"viewport" content"widthdevice-width, initial-scale1" charset"utf-8"><link rel"stylesheet" href"h…

生成式AI,引领AI从“换脸”到“造脸”

来源&#xff1a;中智观察头图来源&#xff1a;界面新闻记者&#xff1a;木易编辑&#xff1a;豆芽日前&#xff0c;Gartner发布了2022年重要战略技术趋势。其中&#xff0c;生成式人工智能&#xff08;Generative Artificial Intelligence&#xff09;位列12项重要战略之首。同…

linux的基础知识——IP,UDP和TCP

1.IP协议 IP协议处于网络层&#xff0c;格式如下&#xff1a; 2.UDP UDP协议处于传输层&#xff0c;传输层常用的协议有两种&#xff0c;一个就是UDP&#xff0c;另外一个就是TCP。

从世界数字大脑形成看元宇宙未来趋势

来源&#xff1a;腾云中国科学院虚拟经济与数据科学研究中心研究组成员、远望智库数字大脑研究院院长、腾云智库专家 刘 锋前言&#xff1a;21世纪&#xff0c;科技生态呈现出越来越多的类脑特征&#xff0c;各种前沿科技概念和技术正在形成一个世界规模的数字大脑&#xff0c…

profile 配置文件修改后如何生效?

1、profile生效命令 . /etc/profiel 或 source /etc/profile说明&#xff1a;source命令也称为“点命令”&#xff0c;也就是一个点符号&#xff08;.&#xff09;转载于:https://www.cnblogs.com/Small-sunshine/p/10895426.html

项目:如何快速实现电脑间大文件(lichee.tar.gz)互传?

1.电脑间大文件互传遇到问题 最简单是使用U盘进行大文件互传&#xff0c;但是可能会遇到这种问题&#xff0c;只能取消。 一般我们也可以借助云盘&#xff0c;进行互传。A电脑把电脑上传到百度云盘上&#xff0c;B电脑再下载&#xff0c;但是可能会遇到这种问题。 2.利用IP地…