一、关于博客阅读感想

  阅读了十多篇老程序员(大多在计算机相关行业工作超过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. Putty & Ctrl+s 的魔咒

    Long long ago“ 某些旧的”哑终端“会在发送过来的数据太多,显示速度跟不上时发送一个Ctrl+s让对方等一下,然后再准备好继续显示时发送一个Ctrl+q.Putty“兼容”了这个特性.也有 ...

  2. [LeetCode] Longest Increasing Subsequence

    Longest Increasing Subsequence Given an unsorted array of integers, find the length of longest incre ...

  3. Django 源码小剖: 更高效的 URL 调度器(URL dispatcher)

    效率问题 django 内部的 url 调度机制说白了就是给一张有关匹配信息的表, 这张表中有着 url -> action 的映射, 当请求到来的时候, 一个一个(遍历)去匹配. 中, 则调用 ...

  4. RHEL 6 或者 Oracle Linux 6, 不关机识别新添加的scsi硬盘

    下面看一下在系统不重启的情况,如何让系统认识新的磁盘,并能对其分区与格式化1.在开机状态下新增磁盘2.执行下面的命令 echo "- - -" > /sys/class/sc ...

  5. ubuntu-16.04+-xxx-i386.iso :安装 Oracle 11gR2 数据库

    前言:说实在的,ubuntu 16.04以上很难安装oracle!其间走过了艰难的一段路! 重要附件:ubuntu16.04+-xxx-i386.iso_安装oracle所需的软件包.zip 特点: ...

  6. asp.net项目在IE11下出现“__doPostBack”未定义的解决办法

    最 近我们运营的网站有用户反馈在 IE 11 下<asp:LinkButton> 点击出现 “__doPostBack”未定义”,经过一番google,终于知道了原因:ASP.NET 可能 ...

  7. 让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求

    原文:http://www.cnblogs.com/dudu/archive/2009/11/10/1600062.html 今天下午17点左右,博客园博客站点出现这样的错误信息: Error Sum ...

  8. 给animator动态添加事件

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

  9. bash + script

    shell "" 保留$,`,\, 换行含义,‘’保留字面值 $(), ``用于命令替换 算术扩展如 $[1+1] for循环: for Host in host1, host2, ...

  10. NSString Byte NSData 字节(字符)字符串

    NSUTF8StringEncoding 3个字节(字符)一个中文字符 一个字节一个英文字符