×

敲代码小技巧

敲代码小技巧(教你如何敲代码)

hacker hacker 发表于2022-06-01 18:23:40 浏览27 评论4

4人参与发表评论

本文导读目录:
1、python写代码的小技巧
2、C语言中有哪些实用的编程技巧
3、怎样练习敲代码的速度,有什么方法?
4、如何提高自己的敲代码能力?
5、现实中程序员是怎样飞快敲代码的?
6、有敲代码很快的小技巧吗? 比如哪个手分配那个键
7、怎么敲代码?
8、如何编写代码才能使效率提高

python写代码的小技巧

这个取决于编辑器,也就是你用什么软件写python代码。如果是记事本,那就得像你那样输入;如果你的编辑器带有自动补全功能或自动补全的插件,那么在你输入前半个括号的同时会自动完成后半个括号。你可以试试sublime text这个编辑器。

C语言中有哪些实用的编程技巧

这篇文章主要介绍了C语言高效编程的几招小技巧,本文讲解了以空间换时间、用数学方法解决问题以及使用位操作等编辑技巧,并给出若干方法和代码实例,需要的朋友可以参考下

引言:

编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。

第1招:以空间换时间

计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招——以空间换时间。

例如:字符串的赋值。

方法A,通常的办法:

代码如下:

#define LEN 32

char string1 [LEN];

memset (string1,0,LEN);

strcpy (string1,“This is a example!!”);

方法B:

代码如下:

const char string2[LEN] =“This is a example!”;

char * cp;

cp = string2 ;

(使用的时候可以直接用指针来操作。)

从上面的例子可以看出,A和B的效率是不能比的。在同样的存储空间下,B直接使用指针就可以操作了,而A需要调用两个字符函数才能完成。B的缺点在于灵 活性没有A好。在需要频繁更改一个字符串内容的时候,A具有更好的灵活性;如果采用方法B,则需要预存许多字符串,虽然占用了大量的内存,但是获得了程序 执行的高效率。

如果系统的实时性要求很高,内存还有一些,那我推荐你使用该招数。

该招数的变招——使用宏函数而不是函数。举例如下:

方法C:

代码如下:

#define bwMCDR2_ADDRESS 4

#define bsMCDR2_ADDRESS 17

int BIT_MASK(int __bf)

{

return ((1U (bw ## __bf)) - 1) (bs ## __bf);

}

void SET_BITS(int __dst, int __bf, int __val)

{

__dst = ((__dst) ~(BIT_MASK(__bf))) | /

(((__val) (bs ## __bf)) (BIT_MASK(__bf))))

}

SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);

方法D:

代码如下:

#define bwMCDR2_ADDRESS 4

#define bsMCDR2_ADDRESS 17

#define bmMCDR2_ADDRESS BIT_MASK(MCDR2_ADDRESS)

#define BIT_MASK(__bf) (((1U (bw ## __bf)) - 1) (bs ## __bf))

#define SET_BITS(__dst, __bf, __val) /

((__dst) = ((__dst) ~(BIT_MASK(__bf))) | /

(((__val) (bs ## __bf)) (BIT_MASK(__bf))))

SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);

函数和宏函数的区别就在于,宏函数占用了大量的空间,而函数占用了时间。大家要知道的是,函数调用是要使用系统的栈来保存数据的,如果编译器里有栈检查 选项,一般在函数的头会嵌入一些汇编语句对当前栈进行检查;同时,CPU也要在函数调用时保存和恢复当前的现场,进行压栈和弹栈操作,所以,函数调用需要 一些CPU时间。而宏函数不存在这个问题。宏函数仅仅作为预先写好的代码嵌入到当前程序,不会产生函数调用,所以仅仅是占用了空间,在频繁调用同一个宏函 数的时候,该现象尤其突出。

D方法是我看到的最好的置位操作函数,是ARM公司源码的一部分,在短短的三行内实现了很多功能,几乎涵盖了所有的位操作功能。C方法是其变体,其中滋味还需大家仔细体会。

第2招:数学方法解决问题

现在我们演绎高效C语言编写的第二招——采用数学方法来解决问题。

数学是计算机之母,没有数学的依据和基础,就没有计算机的发展,所以在编写程序的时候,采用一些数学方法会对程序的执行效率有数量级的提高。

举例如下,求 1~100的和。

方法E

代码如下:

int I , j;

for (I = 1 ;I=100; I ++){

j += I;

}

方法F

代码如下:

int I;

I = (100 * (1+100)) / 2

这个例子是我印象最深的一个数学用例,是我的计算机启蒙老师考我的。当时我只有小学三年级,可惜我当时不知道用公式 N×(N+1)/ 2 来解决这个问题。方法E循环了100次才解决问题,也就是说最少用了100个赋值,100个判断,200个加法(I和j);而方法F仅仅用了1个加法,1 次乘法,1次除法。效果自然不言而喻。所以,现在我在编程序的时候,更多的是动脑筋找规律,最大限度地发挥数学的威力来提高程序运行的效率。

第3招:使用位操作

实现高效的C语言编写的第三招——使用位操作,减少除法和取模的运算。

在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作。一般的位操作是用来控制硬件的,或者做数据变换使用,但是,灵活的位操作可以有效地提高程序运行的效率。举例如下:

方法G

代码如下:

int I,J;

I = 257 /8;

J = 456 % 32;

方法H

int I,J;

I = 257 3;

J = 456 - (456 4 4);

在字面上好像H比G麻烦了好多,但是,仔细查看产生的汇编代码就会明白,方法G调用了基本的取模函数和除法函数,既有函数调用,还有很多汇编代码和寄存 器参与运算;而方法H则仅仅是几句相关的汇编,代码更简洁,效率更高。当然,由于编译器的不同,可能效率的差距不大,但是,以我目前遇到的MS C ,ARM C 来看,效率的差距还是不小。相关汇编代码就不在这里列举了。

运用这招需要注意的是,因为CPU的不同而产生的问题。比如说,在PC上用这招编写的程序,并在PC上调试通过,在移植到一个16位机平台上的时候,可能会产生代码隐患。所以只有在一定技术进阶的基础下才可以使用这招。

第4招:汇编嵌入

高效C语言编程的必杀技,第四招——嵌入汇编。

“在熟悉汇编语言的人眼里,C语言编写的程序都是垃圾”。这种说法虽然偏激了一些,但是却有它的道理。汇编语言是效率最高的计算机语言,但是,不可能靠着它来写一个操作系统吧?所以,为了获得程序的高效率,我们只好采用变通的方法 ——嵌入汇编,混合编程。

举例如下,将数组一赋值给数组二,要求每一字节都相符。

代码如下:

char string1[1024],string2[1024];

方法I

代码如下:

int I;

for (I =0 ;I1024;I++)

*(string2 + I) = *(string1 + I)

方法J

代码如下:

#ifdef _PC_

int I;

for (I =0 ;I1024;I++)

*(string2 + I) = *(string1 + I);

#else

#ifdef _ARM_

__asm

{

MOV R0,string1

MOV R1,string2

MOV R2,#0

loop:

LDMIA R0!, [R3-R11]

STMIA R1!, [R3-R11]

ADD R2,R2,#8

CMP R2, #400

BNE loop

}

#endif

方法I是最常见的方法,使用了1024次循环;方法J则根据平台不同做了区分,在ARM平台下,用嵌入汇编仅用128次循环就完成了同样的操作。这里有 朋友会说,为什么不用标准的内存拷贝函数呢?这是因为在源数据里可能含有数据为0的字节,这样的话,标准库函数会提前结束而不会完成我们要求的操作。这个 例程典型应用于LCD数据的拷贝过程。根据不同的CPU,熟练使用相应的嵌入汇编,可以大大提高程序执行的效率。

虽然是必杀技,但是如果轻易使用会付出惨重的代价。这是因为,使用了嵌入汇编,便限制了程序的可移植性,使程序在不同平台移植的过程中,卧虎藏龙,险象环生!同时该招数也与现代软件工程的思想相违背,只有在迫不得已的情况下才可以采用。切记,切记。

怎样练习敲代码的速度,有什么方法?

首先练打字啊。基本的指法要练,不能盲打的话,那肯定是慢。

然后就是英文单词要熟,至少代码中要使用的那些单词要熟,熟到不需要去想,手就自己敲出来了。

只有这样你不会因为因为输入而打断对代码逻辑的思考。

如何提高自己的敲代码能力?

首先这个问题不能急于求成,这不是一天两天的事情、原来我敲代码的速度也很慢,但是现在都已经真的很快了,你得先把键盘熟悉,打字的时候记住千万不要看键盘,即使在你不熟练的时候,还是要尽量避免看键盘,实在想不起来那个键位再看键盘,这样印象深一些,慢慢把所有键位都记住了。这就是我经常敲代码悟出来的经验,这样对你的速度提高很有帮助。最关键的还是得多练,这玩意没啥技巧,熟能生巧,希望对你有用。

现实中程序员是怎样飞快敲代码的?

敲代码很快有几个条件

1.对项目代码和结构非常熟悉,知道整个数据流的在代码中的流动过程和变化过程。知道当前新增的代码在整个项目处于哪个位置,对于数据会有产生什么新的变化。这些要心理有数。也就是从架构层面去思考代码的编写。

2.对于需求理解的很透。这样业务逻辑转成代码逻辑就不会有任何不清楚的地方。

3.已经解决了技术难点,也就是说前期测试性代码已经写过了弄清楚了,避免了突然出现的技术性难点

4.新增的代码和新增的数据结构已经仔细思考过了,并设计好。也清楚引入这些新的代码和数据结构对现有代码的整体影响

5.异常点的位置的处理方案已经安排好了。写代码一部分是正常业务流程,算法过程,但是另外一大块就是处理各种异常。当异常出现之后,是代码重试,报错后忽略,还是报错之后停止代码,还是报错后清理代码并重新恢复上一个状态,等等。这些都是要心理有数。

6.对于如何新增源代码文件,命名函数,命名文件名,命名类名,命名变量名有一整套方案。有时候想个函数名或者变量名都要卡好几分钟,就不算飞快了。别笑,想个变量名,百度十来分钟的时候多了去了。

7.外部环境已经准备好了。IDE稳定,数据库结构稳定,数据稳定,网络稳定,访问网页顺畅,准备好免打扰的牌子。准备好刷卡提需求的二维码,准备好板砖和大刀,预防产品经理提需求和改需求。

有敲代码很快的小技巧吗? 比如哪个手分配那个键

个人习惯吧 标准指法应该比较快。左手食指在F,右手食指在J。然后上下平移分配手指位置

怎么敲代码?

首先要知道,完整的记清一个代码除了答题考试外没别的大用,你背一整天的词人家敲一个首字母就找出来了,那一整段代码呢,记它有用吗?答案是:有用,你省下了搜索查找的时间。

拿最简单的封装举例,记住了无非就是能默打出来,记不住也就是打开浏览器搜索下,搜索多了打多了最后一样会记住。

一开始就去死记硬背对学习和工作都没有太大帮助,反而耗费了你的精力和时间,有一种程序员:他们打的代码很少,多数代码都是从别处复制粘贴过来改一改,但他们最后做出的程序没什么毛病还很稳定。你可能会想:“复制粘贴不是有手就行吗,这些人的技术体现在哪?”

他们的技术体现在:“搜索什么、复制什么、粘贴什么、修改什么、弃用什么”,他们可不像无头苍蝇一样胡乱复制,每一次复制都在计划之中,复制什么、粘贴到哪,在一开始就想好了。

这些人大多数没有去死记硬背,但依然工作顺畅无阻,由此可见不管是整段还是单个,完整地记清代码在工作中带来的帮助远没有工作经验重要。

当然,多学一些总是没有坏处,如果有额外的精力和时间,去记一些关键常用的代码自然是好的。

如何编写代码才能使效率提高

一、排版:

1.关键词和操作符之间加适当的空格。

2.相对独立的程序块与块之间加空行

3.较长的语句、表达式等要分成多行书写。

4.划分出的新行要进行适应的缩进,使排版整齐,语句可读。

5.长表达式要在低优先级操作符处划分新行,操作符放在新行之首。

6.循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。

7.若函数或过程中的参数较长,则要进行适当的划分。

8.不允许把多个短语句写在一行中,即一行只写一条语句。

9.函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。

10.C/C++语言是用大括号‘{’和‘}’界定一段程序块的,编写程序块时‘{’和

‘}’应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体

的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、

switch、case语句中的程序都要采用如上的缩进方式。

二、注释

1.注释要简单明了。

2.边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。

3.在必要的地方注释,注释量要适中。注释的内容要清楚、明了,含义准确,防止

注释二义性。保持注释与其描述的代码相邻,即注释的就近原则。

4.对代码的注释应放在其上方相邻位置,不可放在下面。

5.对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域

的注释应放在此域的右方;同一结构中不同域的注释要对齐。

6.变量、常量的注释应放在其上方相邻位置或右方。

7.全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它

以及存取时注意事项等的说明。

8.在每个源文件的头部要有必要的注释信息,包括:文件名;版本号;作者;生成

日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其

它文件关系等);主要函数或过程清单及本文件历史修改记录等。

9.在每个函数或过程的前面要有必要的注释信息,包括:函数或过程名称;功能描

述;输入、输出及返回值说明;调用关系及被调用关系说明等。

三、命名

1.较短的单词可通过去掉“元音”形成缩写;

2.较长的单词可取单词的头几发符的优先级,并用括号明确表达式的操作顺序,避

免使用默认优先级。

3.使用匈牙利表示法

四、可读性

1.避免使用不易理解的数字,用有意义的标识来替代。

2.不要使用难懂的技巧性很高的语句。

3.源程序中关系较为紧密的代码应尽可能相邻。

五、变量

1.去掉没必要的公共变量。

2.构造仅有一个模块或函数可以修改、创建,而其余有关模块或函数只访问的公共

变量,防止多个不同模块或函数都可以修改、创建同一公共变量的现象。

3.仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。

4.明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等。

5.当向公共变量传递数据时,要十分小心,防止赋与不合理的值或越界等现象发生。

6.防止局部变量与公共变量同名。

7.仔细设计结构中元素的布局与排列顺序,使结构容易理解、节省占用空间,并减

少引起误用现象。

8.结构的设计要尽量考虑向前兼容和以后的版本升级,并为某些未来可能的应用保

留余地(如预留一些空间等)。

9.留心具体语言及编译器处理不同数据类型的原则及有关细节。

10.严禁使用未经初始化的变量。声明变量的同时对变量进行初始化。

11.编程时,要注意数据类型的强制转换。

六、函数、过程

1.函数的规模尽量限制在200行以内。

2.一个函数最好仅完成一件功能。

3.为简单功能编写函数。

4.函数的功能应该是可以预测的,也就是只要输入数据相同就应产生同样的输出。

5.尽量不要编写依赖于其他函数内部实现的函数。

6.避免设计多参数函数,不使用的参数从接口中去掉。

7.用注释详细说明每个参数的作用、取值范围及参数间的关系。

8.检查函数所有参数输入的有效性。

9.检查函数所有非参数输入的有效性,如数据文件、公共变量等。

10.函数名应准确描述函数的功能。

11.避免使用无意义或含义不清的动词为函数命名

12.函数的返回值要清楚、明了,让使用者不容易忽视错误情况。

13/明确函数功能,精确(而不是近似)地实现函数设计。

14.减少函数本身或函数间的递归调用。

15.编写可重入函数时,若使用全局变量,则应通过关中断、信号量(即P、V操作)

等手段对其加以保护。

七、可测性

1.在编写代码之前,应预先设计好程序调试与测试的方法和手段,并设计好各种调

测开关及相应测试代码如打印函数等。

2.在进行集成测试/系统联调之前,要构造好测试环境、测试项目及测试用例,同时

仔细分析并优化测试用例,以提高测试效率。

八、程序效率

1.编程时要经常注意代码的效率。

2.在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率。

3.不能一味地追求代码效率,而对软件的正确性、稳定性、可读性及可测性造成影

响。

4.编程时,要随时留心代码效率;优化代码时,要考虑周全。

5.要仔细地构造或直接用汇编编写调用频繁或性能要求极高的函数。

6.通过对系统数据结构划分与组织的改进,以及对程序算法的优化来提高空间效率。

7.在多重循环中,应将最忙的循环放在最内层。

8.尽量减少循环嵌套层次。

9.避免循环体内含判断语句,应将循环语句置于判断语句的代码块之中。

10.尽量用乘法或其它方法代替除法,特别是浮点运算中的除法。

九、质量保证

1.在软件设计过程中构筑软件质量。

代码质量保证优先原则

(1)正确性,指程序要实现设计要求的功能。

(2)稳定性、安全性,指程序稳定、可靠、安全。

(3)可测试性,指程序要具有良好的可测试性。

(4)规范/可读性,指程序书写风格、命名规则等要符合规范。

(5)全局效率,指软件系统的整体效率。

(6)局部效率,指某个模块/子模块/函数的本身效率。

(7)个人表达方式/个人方便性,指个人编程习惯。

2.只引用属于自己的存贮空间。

3.防止引用已经释放的内存空间。

4.过程/函数中分配的内存,在过程/函数退出之前要释放。

5.过程/函数中申请的(为打开文件而使用的)文件句柄,在过程/函数退出前要关闭。

6.防止内存操作越界。

7.时刻注意表达式是否会上溢、下溢。

8.认真处理程序所能遇到的各种出错情况。

9.系统运行之初,要初始化有关变量及运行环境,防止未经初始化的变量被引用。

10.系统运行之初,要对加载到系统中的数据进行一致性检查。

11.严禁随意更改其它模块或系统的有关设置和配置。

12.不能随意改变与其它模块的接口。

13.充分了解系统的接口之后,再使用系统提供的功能。

14.要时刻注意易混淆的操作符。当编完程序后,应从头至尾检查一遍这些操作符。

15.不使用与硬件或操作系统关系很大的语句,而使用建议的标准语句。

16.建议:使用第三方提供的软件开发工具包或控件时,要注意以下几点:

(1)充分了解应用接口、使用环境及使用时注意事项。

(2)不能过分相信其正确性。

(3)除非必要,不要使用不熟悉的第三方工具包与控件。

十、代码编译

1.编写代码时要注意随时保存,并定期备份,防止由于断电、硬盘损坏等原因造成

代码丢失。

2.同一项目组内,最好使用相同的编辑器,并使用相同的设置选项。

3.合理地设计软件系统目录,方便开发人员使用。

4.打开编译器的所有告警开关对程序进行编译。

5.在同一项目组或产品组中,要统一编译开关选项。

6.使用工具软件(如Visual SourceSafe)对代码版本进行维护。

十一、代码测试、维护

1.单元测试要求至少达到语句覆盖。

2.单元测试开始要跟踪每一条语句,并观察数据流及变量的变化。

3.清理、整理或优化后的代码要经过审查及测试。

4.代码版本升级要经过严格测试。

群贤毕至

访客
末屿橪书 末屿橪书2022-06-01 21:41:08 | 回复 ((__dst) ~(BIT_MASK(__bf))) | /(((__val) (bs ## __bf)) (BIT_MASK(__bf))))}SET_BITS(MCDR2, MCDR2_A
美咩厌味 美咩厌味2022-06-01 23:52:47 | 回复 个赋值,100个判断,200个加法(I和j);而方法F仅仅用了1个加法,1 次乘法,1次除法。效果自然不言而喻。所以,现在我在编程序的时候,更多的是动脑筋找规律,最大限度地发挥数学的威力来提
断渊云胡 断渊云胡2022-06-02 00:08:45 | 回复 吗,这些人的技术体现在哪?”他们的技术体现在:“搜索什么、复制什么、粘贴什么、修改什么、弃用什么”,他们可不像无头苍蝇一样胡乱复制,每一次复制都在计划之中,复制什么、粘贴到哪,
鸽吻抌妤 鸽吻抌妤2022-06-02 02:37:28 | 回复 mMCDR2_ADDRESS BIT_MASK(MCDR2_ADDRESS)#define BIT_MASK(__bf) (((1U (bw ## __bf)) - 1)