test

作者: djsecret | 来源:发表于2015-07-15 00:03 被阅读0次

    ####工作内容
    1. 自学__markdown__语法。
    2. 参加培训课程,听老师__讲解考试题目__。
    3. 组织__小组会议__,讨论题目中出现的问题,总结老师所讲内容。

    ___
    ###心得体会
    下午听朱仕智老师讲解了昨天的考试题目,下面对重点内容进行总结:
    * 不管是小作业还是之后的项目,拿到问题后,首先应该对问题进行__分解__,而不是盲目的开始编码。需要对问题进行__抽象__,找到解决问题需要的步骤,按照步骤设置处理函数,使程序层次分明,提高可读性和可维护性。
    * 常量名大写,以下划线分割。例如`CONTEXT_PATH`。
    * 变量名称需要包含一定的信息,增强可读性,即使脱离上下文环境,也能读懂其含义,避免诸如`BufferedReader br`类写法。
    * __处理错误__方式:
    > 1. 直接失败
    > 2. 重试
    > 3. ...
    * 在函数中,尽量使用返回值来获取所需值,不要使用__全局变量__,因为当有多个方法同时操作该全局变量时,容易产生错误。也不要过多的使用引用参数,在程序中对引用参数进行修改,这种方法降低了程序的可读性。
    * 老师简单介绍了__log4j__的使用,由于昨天自学了这部分知识,今天能够较好的理解老师所讲内容,体现了预习的重要性。需要注意的是,将日志输出时 的字符串拼接改为__占位符__,因为如果日志输出级别较高,如   `INFO`,那么`DEBUG`级别的logger都不会输出,但是字符串拼接过程仍然会执行,带来额外的计算。
    * __面向接口编程__:如果接口能够满足要求,尽量对接口进行操作,如
    ```java
    List<String> list = new LinkedList<String>();
    ```
    这样如果改变具体实现方式,只需要改变后面`LinkedList`,提高代码的可维护行。
    * 关闭流__代码重用__,提取出来作为公共方法。而且,关闭流时要单独关闭,单独try...catch。
    * 对于日期等内容,在类中最好使用对应的`Date`类型进行存储,不要使用String类,因为String不仅包含了时间含义,还包含了具体的格式。
    * 慎用Map,因为Map是键值对,可以表示任何东西,可能降低了代码可读性。
    * 公司要求,__单行代码也要加括号__。
    * `toString()`方法不要写死,除非输出格式一定不变。可以考虑将输出方法留给外部定义。
    * 写文件时考虑系统差异,即代码的__可移植性__,多使用系统变量。
    * `System.out.println();`底层是__synchronized__,也就是说同步方法,会造成堵塞,尽量避免使用。
    * 时刻注意__代码重用__,单个函数完成简单的功能,同时注意代码__可读性__,没有性能瓶颈时不要盲目优化。
    * 预见可变性,设置变量和配置文件,方便__代码重构__。
    * 大多数情况下一行一行的读文件,所以将其抽取出来作为__公共方法__,例如`IOUtil`类。
    ```java
      public static List<String> readLines(File file, Charset charset)
          throws IOException {
        // don't use asCharSource(file, charset).readLines() because that returns
        // an immutable list, which would change the behavior of this method
        return readLines(file, charset, new LineProcessor<List<String>>() {
          final List<String> result = Lists.newArrayList();

          @Override
          public boolean processLine(String line) {
            result.add(line);
            return true;
          }

          @Override
          public List<String> getResult() {
            return result;
          }
        });
      }
    ```

    * 每个函数最开始,应该设置必要的__参数检查__,如`checkNotNull()`等方法。
    * 建议不要用类去实现Comparable接口,而是使用外部的__比较器__,除非确定比较方法不便,提高可维护性。
    * 了解__函数式编程__、__延迟加载__等知识点。

    对markdown的基本用法进行了总结,并使用markdown写日报和知识总结,以后也要如此,日积月累。
    ___
    ###问题
    1. 对面向对象编程理解不够深入,方法提取,问题抽象能力不够深入。
    2. 从学校到企业的思想转变仍需努力,很多情况下不能只是考虑时间复杂度和空间复杂度,还要考虑代码的可读性,可维护性和可复用性等。
    3. 对很多新的技术不是很了解,包括Guava、函数式编程、延迟加载等,对已有知识的理解也不够,包括异常处理,日志管理等,在接下来的学习中需要加强。

    ___
    ###明日计划
    1. 原定的JUnit学习并未完成,明日继续努力。
    2. 上午提交入职材料。
    3. 了解Guava源码,修改自己的代码。
    4. 完成练习作业。

    相关文章

      网友评论

          本文标题:test

          本文链接:https://www.haomeiwen.com/subject/icnuqttx.html