软件构建(八)——表驱动法与一般控制问题

表驱动法是一种编程模式——从表里面查找信息而不使用逻辑语句(if和case)。事实上,凡是能通过逻辑语句来选择的事物,都可以通过查表来选择。本文将介绍直接访问表、索引访问表和阶梯访问表三种常见的表驱动法。最后,本文将记录一些控制问题(如布尔表达式的使用、空语句、深层嵌套问题等等)上的使用原则,这一部分内容比较简单而且与前面的章节有一些重叠,因此将快速带过。

软件构建(七)——防御式编程

防御式编程这一概念来自防御式驾驶。在防御式驾驶中要建立这样一种思维,那就是你永远也不能确定另一位司机将要做什么。这样才能确保在其他人做出危险动作时你也不会受到伤害。你要承担起保护自己的责任,哪怕是其他司机犯的错误。本文将讲述如何面对严酷的非法数据的世界、在遇到“绝不会发生”的事件以及其他程序员犯下的错误时保护你自己。

软件构建(五)——各种数据类型的使用原则

几乎所有的常见编程语言,都包含了整数、浮点数、字符串、布尔等等数据类型,而通过基本的数据类型又可以复合出各种数据结构。本文总结了常用的数据类型(整数、浮点数、字符、字符串、布尔、枚举、数组等等)以及一些不常见的数据类型(结构体、指针等等)的使用原则。最后总结了关于全局数据的一些风险和使用原则。

软件构建(三)——高质量的类和子程序

在计算时代的早期,程序员基于语句思考编程问题。到了20世纪七八十年代,程序员开始基于子程序去思考编程。进入21世纪,程序员以类为基础思考编程问题。类是由一组数据和子程序构成的集合,这些数据和子程序共同拥有一组内聚的、明确定义的职责。由此可见类和子程序在现代编程中的地位。本文将就如何创建高质量的类和子程序提供一些建议。

软件构建(二)——架构与设计

软件架构(software architecture)是软件设计的高层部分,是用于支撑更细节的设计的框架。本文关注的并不是如何开发一个软件的架构,而是设计一个架构时应该关注的部分。此外,设计就是把需求分析和编码调试连在一起的活动,好的高层设计能提供一个可以稳妥容纳多个较低层次设计的结构,其对于小型项目非常有用,对大型项目更是不可或缺。因此,本文将总结软件构建中设计的基础概念及基本方法。

软件构建(一)——软件构建基础

开发计算机软件是一个非常复杂的过程,而软件“构建”是指建设过程中“动手”的部分,其中不仅仅包括“写代码”,还包含了计划、设计、测试、集成等等其他工作。本文首先总结软件构建的含义以及其主要活动;接着列举了一个比较合理的隐喻——建造房子——来理解软件开发;最后阐述了软件构建的前期准备工作的重要性,阐述了定义问题和分析需求的重要性,以及应该准备哪些事情。

新版Hexo主题Raytaylorism v2发布

时隔两年多,我自制的Hexo主题Raytaylorism(Github地址)终于喜迎v2版本的发布。这个项目可以说是我在学生时代Web前端领域中的收官之作,因此在本次升级主题的过程中,一切都尽量做到精细。例如所有的页面都经过重新设计,采用清新的的响应式的Material Design风格,加入了个性化的“读书”“关于”页面,以及皮肤自定义、分类目录、正文滚动目录、打赏等等特色功能,并且该主题支持最新的Hexo 3.1版本。由于主题的功能较为复杂,所有的安装说明和配置事项都写在了Github项目的README中,需要使用主题的同学请认真仔细阅读README哦,特别是启用那一节的说明很重要!很重要!很重要!一定要照做否则你会发现hexo启动不起来或最终效果和截图上的不一样。 使用过程中有任何问题欢迎给我开issue。下面正文将介绍主题在Github上没有详细解释但又非常有特色的功能。

2015年秋季学期总结

好久没有写学期总结了。2015年秋季学期是我研究生阶段的倒数第二个学期,时间线上主要由实习、找工作、学(zhuang)习(bi)和写论文组成。由于这学期找完工作之后导师没有给我安排什么实验室的工作,所以有比较大段的自由时间可以支配。在外人看来我好像这学期过得很悠闲,实际上是在自己的合理安排下过得非常充实,现在写篇简短的文章总结一下。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器