对于初学编程的一些建议

原创 2016年12月15日 17:56:15

    最近工作上有点闲,自己开始看看书,学习一些新的技术.最近开始看Linux内核的分析,Object-C编程和git的使用等书籍.看到累得时候,就喜欢到CSDN的论坛里逛逛,看看上面C语言论坛里大家提出的问题.只要是贴出代码的,我就习惯性copy到本地,运行一下发帖人的问题.然后开始找其中的问题.有的LZ贴了很长的代码,我也一并拷贝,然后运行复现问题,最后解决问题回帖给LZ看.这种方法可能不太好,不如给他讲解问题所在的好.有时候我也会附上一些问题的解决办法或者问题出在哪里.让我感觉不舒服的地方是,大部分的帖子代码风格没法看,所以一般我都是先改一下代码风格,然后再查找问题,更不用说很长的代码了(大于200行).以下是我对初学者的一些建议,言语不当之处请见谅,说的不对之处望指出:

    1) 函数长度控制要适宜,一般控制在200行左右吧;功能多,逻辑复杂代码的行数自然会多,但不能把所有功能都放到一个函数里去实现,尤其是放在main函数里去实现;我们应该有意识的去分割,不论是按功能还是按代码重复度去分割,都是可以的.如果有多个功能要实现,建议用一个函数去实现,如果多个函数里有重复性或者类似的代码,建议把重复的代码另写一个函数实现.这样写的好处是功能清晰,函数短小利于阅读和理解.但也不要极端,把每个函数都写的很短很小,这样反而对程序的性能起到反作用.所以,建议大小要适宜.

    2) 函数名和变量名的定义;我的建议是要做到见名知义,变量名或者函数名建议使用单词或单词的缩写形式,所以需要我们有一定的专业英语基础.学编程也需要我们学好英语的,尤其是专业英语.对于这个方面的学习,可以通过看别人的代码(优秀的),积累一些通用的单词缩写,比如一个计数变量count,也可以用其缩写cnt,再比如循环变量,大家都基本上使用i,j,k,所以我们也尽量使用,这样别人看到这样写就知道什么意思了.看到有些LZ的代码里使用拼音,不是不行,自己看是好理解,中国人看还可以,如果是外国人呢.我们的代码要朝着外国人也能看懂方向去吧,再说我们用汉语拼音定义变量或函数名,公司领导估计也不愿意的.所以,我们现在就要有意识的去做这件事情,不明白的单词可以去网上查嘛,学编程还能提高我们的英语,多好的事情.

    3) 代码风格.看到LZ的帖子里代码写的都很紧凑,还好没看到把多行代码写在一行里的,不过有见过把两行代码(两个分号)写在一行的,如果较短小的话,还是可以理解的,如果有超过3行的写在一行里,我感觉看着不舒服.我们写出的代码不是仅仅为了实现功能的,另一重要的是给别人看的,别人如果看了我们的代码很乱,不知道在背地里怎么骂我们呢.先不管功能实现的好不好,程序性能有没有最优.这些需要积累的,不是一天两天能够做到的.但是,把代码写的清晰有序,这是一个习惯问题,所以我们要养成这样一个好习惯.什么样的格式是好的呢,不同的公司可能有自己的代码风格,有些是通用的,比如空格的使用,for (i = 0; i < MAX_LEN; i++);变量与逻辑符之间加空格,分号后加空格, for, if, else后面与括号之间加空格等等.华为有自己的代码风格,可以参考一下他们的.总之要有自己的一个好的编程风格习惯.

   4) 代码的调试步骤,我在论坛里看到有些LZ的贴出的代码比较长,我编译一下发现有多个语法错误,警告也有好几个;然后标题写上"编译通不过";编译不过,只能说是语法学得不够好,基础不牢固.对于语法错误,与其让他人帮忙解决,不如自己独立去解决,不论是查书,还是上网自己搜资料,通过自己的努力将错误去掉,把警告找出原因,尽量也去掉.这样才能学到更多的东西,求人首先要求己.不通过自己的思考和努力,把问题交给别人,这样就相当于把学习的机会让给别人.因为将来去公司工作,工作是让我们自己去做的,而不是求别人.所以,首先要摆正态度,养成独立思考,独立解决问题.如何让自己的编程能力提高呢,不就是在初学时多出错误,多去解决错误和问题,这样才能够更快的进步嘛.

    话题扯远了,对于代码长,错误有多,警告也多的情况,除非是拷贝别人写的代码,如果自己写,我建议还是一步一步的来.怎么说呢,就是要实现若干个功能,那么就一个功能一个功能的实现.每个功能写好了,编译运行没问题了,然后我们再去实现下一个功能.这样如果功能之间有穿插,调用,我们也好定位问题的位置.反之,把功能一下子都写出来,然后编译看到那么多错误和警告,大家都会看着头疼,不愿意继续去看,况且是代码风格很奇葩的呢.

    对于拷贝别人的代码,我们也可以分步去调试,可以把一部分功能先注释掉,然后多加一些调试信息判断一下函数是否按照预订的逻辑去实现了,变量是否为想要的值等等.如果,自己对调试工具用的还行,也可以使用调试工具,设置断点方法等等去调试错误.比如使用gdb去调试运行出现的段错误.

    5)对于自己的代码保持精益求精的态度,不能实现了,测试没问题了就认为很好了。独立写出来,这是一种进步,这种进步只要通过自己的努力,养成编程的思想,慢慢都能够做到;但是,如果在实现的基础上对代码进行优化,比如将时间复杂度和空间复杂度考虑进去,以及如何让代码更有扩展性和易于移植,这些不是很容易做到的。之前,一位老师跟我们讲,学习C语言要想达到精通的地步,没有3~5年以上的使用和开发经验,不能谈得上精通。如果自己这方面的悟性不很高,那么需要更长时间的练习和摔打;对有些初学者,能够实现功能,运行没问题已经是很大的挑战了,考虑这些会不会更难呢。我的回答是肯定的,所以给我这个结论的老师也提醒我,学习C语言像一条递增的曲线,随着时间的推移,曲线上升的加速度越来越小,就像爬山一样,约往上山坡越陡,上升的速度就会越来越慢;所以,我们不能安逸于相对平坦的山坡,而是勇于挑战陡坡。平时对于自己的代码应该多修改,多总结。平时学习和使用过程中,尤其看到他人对于一个功能使用不同算法或者不同写法要多留意和学习;


IT高效学习的建议

IT高效学习的建议 一些有关“怎么学”的建议 首先需要明确方向,否则即使学习方法再高效,也不免南辕北辙,背离自己的目标。关于学习方向的讨论,请参见之前的一篇文章。下面我来重点说一说有...
  • yangtaolyt
  • yangtaolyt
  • 2011年11月06日 10:56
  • 491

绝对经典 C++初学者必看的50个建议

1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programming Language》和《...
  • luckisok
  • luckisok
  • 2005年12月20日 20:49
  • 670

从技术角度对中国系统软件发展的一些看法和建议

对中国系统软件发展的一些个人看法和建议 陈怀临 系统计算研究所 huailin@xtrj.org www.xtrj.org 8/8/2004 作者:我写的一些不成熟的想法。希望大家多提意见,并且多帮助...
  • klandy
  • klandy
  • 2005年03月16日 23:29
  • 1348

对腾讯(QQ)的建议

    前几天想到了,跟朋友交流了一下,他也表示认同,所以记录下来。腾讯在国内,尤其是年轻人当中,占有很大的市场,最近几年腾讯的发展也不错,业务涉及的领域越来越大。但是有一个问题,就是腾讯好像只有中文...
  • wangguan007
  • wangguan007
  • 2006年06月15日 13:39
  • 951

好东西大家分享:给所有想从事软件研发的年轻工程师的忠告与建议

作者:在别处 出处:博客中国  一.我为什么写这篇文章: 这几天,在某个IT论坛的软件培训与认证栏目中,看到了很多处于迷惑之中的人们,也看到了许多大家普遍感到困惑的问题,写此文章的目的,是想将我这些年...
  • nitamade
  • nitamade
  • 2007年08月09日 17:00
  • 1495

] FPGA设计需注意的方方面面

不管你是一名逻辑设计师、硬件工程师或系统工程师,甚或拥有所有这些头衔,只要你在任何一种高速和多协议的复杂系统中使用了FPGA,你就很可能需要努力解决好器件配置、电源管理、IP集成、信号完整性和其他的一...
  • zhongrg
  • zhongrg
  • 2008年03月17日 20:16
  • 1174

对自学编程者的一些建议

学习编程已经不再是少数计算机专业人员的事情了,就如同计算机深入到我们生活的每一个角落一样,学习编程的人也是越来越多。由于现在网络信息资源丰富,大多数人都选择了自学。我自幼自学编程十余年,多少积累了一些...
  • richardbao2000
  • richardbao2000
  • 2006年09月19日 18:49
  • 5733

java初学基础班经典练手小程序300例

java初学基础班经典练手小程序300例(飘叶寻梦整理)  (2012-07-11 22:51:44) 转载▼ 标签:  java   经典小程序   ...
  • qq_28967695
  • qq_28967695
  • 2017年01月03日 17:39
  • 1527

给正在面试的同学一些建议

给正在面试的同学一些建议前言做Android开发已经有三年时间了,由于忙于工作的原因(如果你知道996,相信你会理解,如果不了解,请自行百度…),所以一直没有时间来分享开发中遇到的问题,我希望在这里能...
  • Hugh_hly
  • Hugh_hly
  • 2016年03月10日 17:32
  • 269

关于提高效率的三个建议

读《程序员的思维修炼--开发认知潜能的九堂课》中控制注意力一章提到了下面三个建议,个人觉得对提高注意力还是很有用的,因此摘录如下        一、仅扫描输入队列一次        二、顺序地处理...
  • myzhanglt
  • myzhanglt
  • 2012年04月07日 15:11
  • 696
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对于初学编程的一些建议
举报原因:
原因补充:

(最多只允许输入30个字)