0%

掌控自己的代码

掌控自己的代码

记一次有收获的面试过程,这可能会改变我迄今为止的代码习惯和认知,并且我会受益于其中
休要花里胡哨!!!

面试官让我写了一段代码,大致是两个数组之间的相互加减操作

1
2
3
4
5
6
7
8
9
float max = fmax(arr);
float min = fmin(arr);

float k = max-min;
unsigned char *ptr = res;

for(float *i = arr; i < arr + n; i++){
*ptr++ = (*i - min)/k * 255;
}

面试官:你觉得你的代码有什么问题吗?
我: 可能就是在k可能带来的除0问题把
面试官:其它的呢?
我: …

面试官: 你写代码一定要肯定自己的输入输出,程序计算出的结构你要肯定,而不是让其他因素来影响你
我: …

你的i是float,prt是uchar,你知道会怎样做类型转换吗

编译器会自动去做

一定会这样去做吗,或者有不同的处理办法,不同的编译器呢?不要让编译器去决定你程序的运行结果,要对自己代码的结果要有一个肯定

我明白了,我可以在计算是加上类型转换的关键字


在我的认知中,代码高手就是各种技巧乱飞,能隐式绝不显示,arr[i]要写成 *(arr + i),注意布局的美感,一通花里胡哨。而往往忽略了程序的关键问题,正确性和肯定性和易读性

这是一个小小的问题,但却启发了我。
未来,做一个确信自己代码的人

改变ing