一、关于博客阅读感想

  阅读了十多篇老程序员(大多在计算机相关行业工作超过10年)关于自身经历的博客,很有感触。这里一方面总结一下看博客的收获,另一方面写点自己的感受。

  首先,这些博客不少涉及到了两大类的内容:作为一名程序员的成长经历和程序员的生涯。

  作为一名程序员,这些博主们的身份成长经历多种多样,既有小时候就兴趣浓厚,所处环境优越起步早的;也有高考的时候才填志愿进入到计算机专业学习了4年专业知识的;甚至有并不是科班出身而是半路出家转行当程序员的。然而虽然博主们的背景不同,但作为程序员的成长经历中却又不少相同之处。首先,无一例外地,他们的自学动力和能力都很强,自我驱动着去掌握更多的技术,或者是学习更多的知识,更多的动手锻炼。科班出身的程序员或许一开始有不少都是接受理论知识,但到了大概大二大三的时候无一例外的都开始更多的动手实践。所以作为一名合格/优秀的程序员很重要的一点是自我学习的动力和能力。然后,有不少博主提到的一点是本科计算机专业学习的内容有不少是理论性的,虽然计算机专业是偏重实践性的专业,但并不代表这些基础的理论性知识就没有用。有一位博主说的很有道理:“本科毕业出去找工作的人就是一张白纸,而这张白纸的吸墨能力决定了他能走多远。”并且,这里面提到的“吸墨能力”实际上是由本科阶段学习的知识是否扎实决定的。换一种说法,也就是虽然一些知识是理论性的,但学好这些知识有助于在实践中更快地上手具体的技术。

  博主们提到的另外一项内容就是程序员的生涯。从职业的角度来说,程序员不过是一项职业,同样要面临一般人面临的生涯规划、升职跳槽创业、结婚生子、买车买房等问题。首先当然的,在这一系列过程中肯定会遇到困难,怎么解决困难并不是讨论的重点。为什么?因为一来对于困难的具体解决办法没有通论,二来对于精神上的解决办法对于各种困难是通用的,不需要在这里讨论。那么重点讨论的是什么呢?我觉得是方向性的问题。首先大部分的博主都提到一点:要了解自己和了解行业。有一位博主总结得狠精辟“ 个人的职业规划就像软件工程。我们都知道软件项目最大的敌人是需求的不明确和需求的大面积变更,同样,在个人的职业规划中,自我需求的不明确和需求的变更也是非常危险的,尤其是在职业计划实施了四五年后需求的变动和改变”(原文链接:http://blog.csdn.net/haoel/article/details/1688104)。通俗的说,就是要了解自己。进入一个行业努力学习知识,然后逐渐了解到自己的兴趣和能力所在,选定好一个方向(自我需求)然后进行深入的设计和规划,然后执行这个设计,中途可能会有一些小的调整(补丁)。另一点,则是对于自己职业的大方向选择。主要是看自己对于技术是否有热情和自信,有的话可以选择一些节奏更快,更具有挑战的公司(甚至是自己开公司),没有的话或许选择一些体制内的岗位会更好。这两者之间(或许)没有高下之分,但有是否更适合自己之分。

  然后,就是我个人的感悟了。对于入门来说,我是属于到了大学才开始真正学习计算机相关知识的一类人,在此之前的逻辑都是“计算机==玩游戏==洪水猛兽”。在大一大二的两年里,虽然确实在逐步积累着专业知识,但也由于自身的原因经历了不少颠簸。大三开始,排除了不少个人的问题,应该能够更为专注在学习与实践上面。自己对于计算机行业的了解也和博主们相近:偏重于实践,但是理论也不可缺少。对于自我的职业生涯规划,我或许还面临再多一个的选择。在现在的风气下,既有出来当程序员这一条更偏重于实践的道路,也有读研读博进行计算机科学研究的这条路。我对于自己想法/需求还了解的不够清楚,没有能够很好地做出决定。但毕竟已经到了大三,要抓紧进行抉择。

二、代码复审

注:这里参考的是一篇博客中提到的代码复审的方法(http://blog.fogcreek.com/increase-defect-detection-with-our-code-review-checklist-example/),复审的伙伴是李文涛。

General

  • Does the code work? Does it perform its intended function, the logic is correct etc.
  • Mostly yes.用我自己的测试用例进行测试,代码基本都能给出正确的结果。只有一个功能遗漏了就是在不带任何参数运行程序的时候应该是进入循环等待用户输入线路名称然后输出线路上的站点名称那个功能
  • Is all the code easily understood?
  • Yes.
  • Does it conform to your agreed coding conventions? These will usually cover location of braces, variable and function names, line length, indentations, formatting, and comments.
  • Mostly yes.文涛大部分的书写习俗都和我相同,除了变量的命名方式略有区别(我采用的是多个单词首字母大写来区分单词,文涛采用的是下划线来区分单词)
  • Is there any redundant or duplicate code?
  • In my opinion, no.在我看来并没有重复/冗余的代码
  • Is the code as modular as possible?
  • So-so.核心的计算模块很好地模块化了,但是数据结构则没有,用面向对象的方式封装属性和方法会更好一些。
  • Can any global variables be replaced?
  • Yes.st_num(站点数量)和line_num(线路数量)这两个全局变量如果用vector而非链表进行存储的话是可以去掉的
  • Is there any commented out code?
  • No.没有被注释掉的代码
  • Do loops have a set length and correct termination conditions?
  • Yes.循环都有良好的终止条件
  • Can any of the code be replaced with library functions?
  • No.没有能被库函数替代的代码
  • Can any logging or debugging code be removed?
  • No.不存在调试/日志代码

Security

  • Are all data inputs checked (for the correct type, length, format, and range) and encoded?
  • Yes.对各种输入都有进行检查
  • Where third-party utilities are used, are returning errors being caught?
  • No.没有使用第三方的utilities。
  • Are output values checked and encoded?
  • No.没有对输出结果进行检查(说实话我没懂怎么个对输出结果进行检查法)
  • Are invalid parameter values handled?
  • Yes.有对非法参数的处理

Documentation

  • Do comments exist and describe the intent of the code?
  • No.没有相关的文档或者readme
  • Are all functions commented?
  • Yes.所有的函数都有注释
  • Is any unusual behavior or edge-case handling described?
  • Yes.对于输出结果中是否换乘的处理不具有扩展性,代码中包含了数据本身(是手动判断换乘站的……)
  • Is the use and function of third-party libraries documented?
  • No.没有使用第三方的库
  • Are data structures and units of measurement explained?
  • Yes.相关数据结构也有注释说明
  • Is there any incomplete code? If so, should it be removed or flagged with a suitable marker like ‘TODO’?
  • No.代码是完整的

Testing

  • Is the code testable? i.e. don’t add too many or hide dependencies, unable to initialize objects, test frameworks can use methods etc.
  • Yes.代码是可测试的
  • Do tests exist and are they comprehensive? i.e. has at least your agreed on code coverage.
  • Yes.测试代码存在,并且我认可
  • Do unit tests actually test that the code is performing the intended functionality?
  • Yes.
  • Are arrays checked for ‘out-of-bound’ errors?
  • No.没有检查越界错误(不过我也没找到哪里需要进行这样的检查)
  • Could any test code be replaced with the use of an existing API?
  • No.

Week3 博客阅读感想和代码复审的更多相关文章

  1. 【个人博客作业II】代码复审结果

    [代码复审结果] General Does the code work? Does it perform its intended function, the logic is correct etc ...

  2. 用python爬虫监控CSDN博客阅读量

    作为一个博客新人,对自己博客的访问量也是很在意的,刚好在学python爬虫,所以正好利用一下,写一个python程序来监控博客文章访问量 效果 代码会自动爬取文章列表,并且获取标题和访问量,写入exc ...

  3. 将批量下载的博客导入到手机后,通过豆约翰博客阅读器APP(Android手机)进行浏览,白字黑底,保护眼睛,图文并茂。

    首先下面演示的博文来自于以下地址:http://www.douban.com/note/423939291/ 需要先通过博客备份专家将导出的博文导入到手机(还不会用的朋友请先阅读http://www. ...

  4. 个人博客作业Week2(代码规范,代码复审)

    Q:是否需要有代码规范 首先我们来搞清楚什么是“代码规范”,它和“代码风格”又有什么关系.依据个人的审美角度,我可能更喜欢在函数与函数之间空出一行,可能在命名习惯和代码注释上更加的internatio ...

  5. 『给它加个壳』纯MarkDown博客阅读体验优化

    今天鼓捣了一天纯MarkDown书写的博客样式的美化,事实证明图表较多的MarkDown撰写的博文一样可以展现出非常漂亮的效果.为了让纯MarkDown书写的博客有一个干净舒服的阅读体验,我主要针对博 ...

  6. 通过爬虫代理IP快速增加博客阅读量——亲测CSDN有效!

    写在前面 题目所说的并不是目的,主要是为了更详细的了解网站的反爬机制,如果真的想要提高博客的阅读量,优质的内容必不可少. 了解网站的反爬机制 一般网站从以下几个方面反爬虫: 1. 通过Headers反 ...

  7. 纯MarkDown博客阅读体验优化

    今天鼓捣了一天纯MarkDown书写的博客样式的美化,事实证明图表较多的MarkDown撰写的博文一样可以展现出非常漂亮的效果.为了让纯MarkDown书写的博客有一个干净舒服的阅读体验,我主要针对博 ...

  8. 新浪博客如何显示高亮代码,DIY

    新浪博客对代码的支持功能不尽完美,或者说一点都不好,可是对于一个追求完美的技术痴而言,代码不能够完美的显示,心里总有那么一些不爽,那么如何在新浪中显示那些带颜色的代码呢?经过探究,可以如下设置:   ...

  9. MarkWord - 可发布博客的 Markdown编辑器 代码开源

    因为前一段时间看到 NetAnalyzer 在Windows10系统下UI表现惨不忍睹,所以利用一段时间为了学习一下WPF相关的内容,于是停停写写,用了WPF相关的技术,两个星期做了一个Markdow ...

随机推荐

  1. find the peak value

    A peak element is an element that is greater than its neighbors. Given an input array where num[i] ≠ ...

  2. Python中的字典排序

    我想将 b = {'a':234,'b':1,'c':2,'e':2387} 分别按照key和value进行排序,该怎样办呢? Python中比较常用的排序有两个函数, 一.定义 (1)一个是List ...

  3. mysql慢日志设置

    mysql的慢日志查询对于sql的优化还是很有意义的,具体说下如何开启这个mysql慢查询日志(默认是开启的). 关于设置在mysql的官方手册或网上都有很多,但是要注意的是,mysql5.6与之前的 ...

  4. ECshop设置301最快捷最简单的方法

    ECshop设置301最快捷最简单的方法 在 init.php中加入以下代码 if (strtolower($_SERVER['SERVER_NAME'])!='www.fz1688.com') { ...

  5. window环境下杀死tomcat

    window环境下杀死进程 1.首先查找到占用8080端口的进程号PID是多少(tomcat默认是8080端口,假如你修改了tomcat的监听端口,请输入你的tomcat端口号) netstat -a ...

  6. Linux下php5.3编译oracle客户端

    因项目需要在linux下进行php5.3的oracle客户端编译,简要介绍一下步骤及走过的弯路. 1.下载Oracle客户端程序包,其中包含OCI.OCCI和JDBC-OCI等相关文件. 1.1下载文 ...

  7. PHP读写文件高并发处理实例-转

    背景: 最近公司游戏开发需要知道游戏加载的流失率.因为,我们做的是网页游戏.玩过网页游戏的人都知道,进入游戏前要加载一些资源.最后才能到达创建角色的游戏界面.我们有一个需求就是要统计在加载过程中还未到 ...

  8. [转载]寻找两个有序数组中的第K个数或者中位数

    http://blog.csdn.net/realxie/article/details/8078043 假设有长度分为为M和N的两个升序数组A和B,在A和B两个数组中查找第K大的数,即将A和B按升序 ...

  9. 给animator动态添加事件

    using UnityEngine; using System.Collections; public class setAnimationEvent : MonoBehaviour { public ...

  10. Java实现动态代理的两种方式

    http://m.blog.csdn.net/article/details?id=49738887