工作、生活心得

变量初始化

在我的工作中再一次证明了这一条普适定律的正确性。让变量处于好的状态, 只有好的状态, 你才能确定那些你没有关注到的部分是合乎你想象的

输入检查

通过if判断来确定, 参数传入, 函数返回, 文件读取,获取到的信息是合法的 

可能发生的一定会发生, 即便malloc几个字节,我也遇到看起来返回了NULL的情况

正确的数据类型

必须使用正确的数据类型, 要注意无符号数和有符号数的转换

抽象分层

不同功能之间必须抽象出来进行分层, 不然功能拓展的时候就会吃大亏

运算时判断

对于加法的溢出判断我还没有深刻的体会,但是对于除法,一定要确保除数不为0

查看你获得的每一份文件

对于接收一个项目,简单的方法是从入口看下去,但是这样会导致缺失很多信息,所以应该至少把每个文件看一遍, 包括隐藏文件(以.开头的文件)

相等性的判断

相等性是非常重要的特性,比如在hashmap里面相等性是非常重要的,此外在go语言里面的error上,到目前位置我还不知道error是怎么判断相等的。一般都是在写一些error != nil 的代码, 但是 error == io.EOF 是怎么判断的,我也不清楚,所以从这些实际的体会上可以得到相等性是非常重要的。

长度的确定

对于一些具有结构的数据而言,在阅读时,条目的长度是需要注意的,例如每个MFT Entry的长度是1024这个结论是我在看了相当多的资料之后才看到的,但这并不是我在彼时一开始就关注到的东西,所以在此记录一下。

变量值的交换

交换对于一门语言是很重要的, 对于python 和go来说可以使用解压赋值来进行交换, 对于c的基础类型可以使用temp =a ; a = b; b = temp; 这样的方法来交换,对于复杂的结构可以使用memcpy等方法来完成。 但是在java里面的变量交换却不是把水倒过来倒过去那么容易, 需要依靠java保证的参数从左到右压入顺序来完成 a = swap(b, a = b); swap(a, b) : return b; 这样的方法来完成。 

所以面对一门语言,需要思考一下交换的问题。

对别人的截图保持好奇心

在看到别人的图片的时候,好奇别人是怎么制作出来这样的图片的,有可能是直接截图截出来的,那么可能我使用的工具不是最科学的,可能需要换一个工具。

比如在博文里看到有MFT Entry的截图上面直接就有了属性头和属性体的高亮,但是当时我并没有好奇这个高亮是怎么做出来的,直到通过使用winhex打开自己的磁盘之后,才看到原来这个工具就带有这样的功能。

另外在张秀宏著作的《自己动手写lua虚拟机/编译器/标准库》一书中,似乎是大量使用了hex.Dump函数返回的字符串,作为文章中的截图使用,这也值得一记

错觉

站在地铁上的时候,对面地铁开走了,你会觉得是自己这边开走了 

当你自己开走了的时候,你却觉得自己似乎没有动。

感受和真实 可能不是差距,而是相反

一定有什么方法

如果别人有什么方法做成,那么一定就有什么方法可以做成 (学习MFT得到的思考)

喜欢的界面字体

Bitstream Vera Sans 12

代码字体

Fira Code 12, Ubuntu Mono Derivative Powerline Nerd Font 14

参数间的关系

在写函数的时候,注意参数之间的关系和参数本身被类型限定的值域

 

少说话: 沉默的人更可爱

posted @ 2019-11-22 11:06  不怕旅途多坎坷  阅读(186)  评论(0编辑  收藏  举报