首页 > 编程语言 >程序员修炼之道阅读笔记

程序员修炼之道阅读笔记

时间:2023-04-21 22:13:14浏览次数:37  
标签:代码生成 DBC 笔记 Perl 程序员 修炼 生成 schema

第19节 文本操纵

1、学习一种文本操纵语言。文本操作语言对于编程的意义,就像是刳刨机对于木工活的意义。

2、文本操作的案例。

  • 我们的测试数据有好几万条,散落在不同文件,如果需要进行合并并转换为特定格式,手动处理是无法想象的。但如果使用 Perl 几个小时就可以完成。
  • 数据库 schema 维护。可以写一组 Perl 脚本读取数据库 schema 定义的纯文本文件,根据它生成,用于创建数据库的 SQL 语句。schema 的 XML 版本等
  • 生成 web 文档。可以编写 Perl 程序,分析数据库 schema,C 或 C++ 源文件,及其他资源,生成 HTML 文档。
文中很多案例使用 Perl,这些工作也可以使用 Python 代替或者 Shell 里的 awk,sed 代替。

第20节 代码生成器

1、作为程序员,有时会需要我们在不同地方重复相同信息。如果出现这种情况,你就可以考虑构建代码生成器了。代码生成器就是编写能编写代码的程序。

2、有两类代码生成器:被动代码生成器和主动代码生成器。

3、被动代码生成器是独立执行的。它可以用来生成模板,版权声明,每个新文件的标准注释等等。

4、主动代码生成器会在每次需要其结果时被使用。比如根据数据库 schema 创建代码。

5、代码生成器不一定要生成代码,它可以用来输出任何格式的内容,比如 HTML、XML、纯文本等。

比如 iOS 里的三方库 R.Swift 就是一个根据资源名自动生成对应结构体的主动代码生成器。

第21节 按合约设计

1、注重实效的程序员会不信任自己,所以他们针对自己的错误行为进行防卫性编码。

2、按合约设计(Design By Contract,简写DBC)是 Bertrand Meyer 为 Eiffel 语言发展的概念。它的核心是用文档记载模块的权利与责任,并进行校验。它的目的是对函数做一些前置检查和后置保证,结合编译器的支持,我们能够尽早的发现代码问题。

3、DBC 有三个概念。

前条件:为了调用例程必须为真的条件。

后条件:例程保证会做的事情,其完成时的状态。

类不变项:其确保从调用者的视角来看,该条件总是为真。

4、Java 中的 iContract 框架是专为 DBC 设计的,它通过注释里的 @pre、@post、@invariant 声明这三个概念。它会读取注释并生成包含断言逻辑的源文件。Eiffel 则是通过 require、ensure、is 三个值表示对应概念。但是支持 DBC 的语言真的很少。

第22节:死程序不说谎

1、对待程序我们通常会有“它不会发生”的心理状态,这会导致我们忽视一些问题。对于注重实效的程序员来说,如果我们忽略了一个错误,将是非常糟糕的事情。

2、我们一些异常情况,我们应该及早崩溃,用于强调问题的存在。

3、引起崩溃的时候不要造成破坏,比如申请的资源还没有释放等情况。

4、死程序带来的额危害通常比有隐患的程序要小得多。

标签:代码生成,DBC,笔记,Perl,程序员,修炼,生成,schema
From: https://www.cnblogs.com/bu-dao-weng/p/17341997.html

相关文章

  • 四月第二篇阅读笔记
    在这本《人月神话》中,其中提到了软件系统的复杂性远远超过了建筑行业和制造行业,软件的需求是在人的脑子中很快形成的一种想法,用我们的自然语言都很难完整、准确的表达给对方。一般情况下,人们只有在看到一个已运行的APP或者网站以后才会说:“哦,我要的其实不是这个功能,其实我想得是能......
  • 计网学习笔记九 Routing Fundamentals
    在这一讲开始讲路由器的控制平面。简单介绍了routing,两个最小cost算法。参考看的文章:VC网络中的路由VC网络和数据报网络中路由的区别:DifferencesbetweenVirtualCircuitsandDatagramNetworks三种路由方式(静态、默认和动态):TypesofRoutingRouting简介network对象不同......
  • 五个 Go 高级程序员时刻关注的问题 —— 你也在考虑吗?
    作为Go程序员,很容易陷入编写代码和解决问题的日常任务中。那么有经验的Go开发者在编写代码时会考虑哪些因素?他们在这方面积累了哪些经验教训?在本文中,我们将深入了解有经验的Go开发者的思维方式,看看他们真正在思考什么。让我们开始吧。1.规范为了促进代码库的一致性、......
  • 程序员修炼之道
    今天在论坛里看到了一位工作10年的java大牛总结的java程序员修炼之道,看完后给出的评价是:字字玑珠,深入人心,猛回头,自己一无是处···大牛告诉我们应该好好学习与修炼以下知识与技能 Java语言学习(对线程(thread),串行化,反射,网络编程,JNI技术,容器(Map,List,Iterator),类加载器(......
  • Java学习笔记(三)
    1.  请描述你理解的循环按照一定次数重复地执行程序,直至达到次数上限,将重复的代码只编写一次,然后再重复执行即可,这样的程序结构就是循环结构。2.  请描述嵌套for循环执行的过程嵌套循环是先执行外层循环,然后再执行内层循环。外层循环执行一次,内层执行若干次,当内层执行完......
  • AOP学习笔记
    概念什么是AOP(1)面向切面编程(方面),利用AOP可以对业务逻辑的各个部分进行隔离,业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。(2)通俗描述:不通过修改源代码方式,在主干功能里面添加新功能(3)使用登录例子说明AOP登录例子术语连接点(joinpoint):类里面......
  • 动力节点⑤章 vuex——vue视频笔记
    5Vuex5.1vuex概述vuex是实现数据集中式状态管理的插件。数据由vuex统一管理。其它组件都去使用vuex中的数据。只要有其中一个组件去修改了这个共享的数据,其它组件会同步更新。一定要注意:全局事件总线和vuex插件的区别:全局事件总线关注点:组件和组件之间数据如何传递,一个绑定$......
  • ROS学习笔记(四)- ROS的launch文件
    书接上回,上次已经介绍到launch文件的一些内容了,这次详细记录学习一下。在ROS中,launch文件是一种XML文件,用于描述ROS系统中的节点、话题、参数等信息,可以用来自动化启动多个节点和启动参数服务器。在实际应用中,launch文件可以让用户非常方便地组织ROS系统的启动和配置。下面详细介......
  • 主席树 学习笔记
    考试的时候用到了,顺便学习一下。upd:2023.04.21终于把坑填了。0x00前言主席树(又称可持久化线段树,函数式线段树)是一种常用的数据结构。它以保存每次修改时的历史版本为主要思想,拥有大量的应用场景(可持久化trie/并查集/数组\(\ldots\))(当然,常数也是很大的)。0x01引入例题:HDU2......
  • 读书笔记 - 《Monolith to Microservices》
    如果你的产品目前是B/S或者C/S架构,想要考虑重构成微服务,这本书绝对是一个很好的参考,作者通过自己的实践经历,详述了以下几个方面:不要因为别人都做微服务,你就想要把自己的系统转成微服务,首先需要分析自己系统碰到的问题,找到最适合的解决办法,微服务不是万能的,不能解决所有问题考虑......