2013/12/30---2014/01/03

1.快捷键的使用
    快捷键的使用时一个非常重要的事情,尤其是eclipse中的查找快捷键。在查找java、xml等文件时,可以使用Shirt+Ctrl+R;全局文件内容搜索时,可以使用Ctrl+H;还有就是实在不行就点击“search”键,然后“File”,里面可以选择要搜索的文件后缀名。当然还有一些比较有用的快捷键,例如Shirt+Ctrl+O,可以帮你迅速导入依赖关系包,并清除不需要的关系包;还有通过搜索名字来得到java文件Shirt+Ctrl+T。


2.调试

在调试时,主要用到F5,F6,F7和F8几个键。F5是跟踪到方法的内部,F6是单步执行,F7是执行完方法返回到调用此方法的下一步,F8是继续执行到下一个断点结束。在以debug模式打开jetty服务器后,点击前台按键进入后台的java程序,如下图:如果要关闭此次debug,可以点击下列图中这个键。
这个键是非常有用的,特别是在一次调试时前台不断有request请求过来时,点击这个键关闭非常有效。主要好处就是在下次调试时,排除上一次的干扰。在调试的时候,还需要查看程序运行中国的取值。可以依次打开折叠的目录:在很多情况下,需要调试的就是要找出在哪一步,哪个值被取为了null值,要更多的关注这种情况,因为往往是null值使程序fail了。

3.思路,思路纸质化
    2013年最后一天和王聊了半个小时,很感谢他让学到一点一个做需求的好程序员是什么样的,首先你要把思路理清楚。这一点很关键,为什么很关键就是因为你如果没有理清思路,你的脑子就是一团浆糊,即使你自己觉得懂了可以立即开始写代码了,很大一种可能性就是你会陷入重复的困境,写了一点代码,恩觉得应该调试一把,发现有点问题,然后开始改,继续调试,1遍2遍,,,后来发现程序被改的面目全非,好吧索性就还原(想想以前的先辈们没有svn代码管理工具的时候该怎么办),还原的时候发现有部分和第一次的时候是一样的,这时候印象比较深,改了改,调了调,。。。,然后终于成功了一步,发现是因为有一个细节没有考虑到。接下来,进入第二步的开发和调试。有没有发现一个很严重的问题,就是因为没有考虑到一个小小的边界和范围可能就浪费了几个小时,甚至一天的时候。为什么不一开始就理清一个思路用本子记下来,在本子上列好了以后,和你的baby谈论好了以后开始做呢。最起码有一个好处,你从大的方向不会出错,如果你考虑的足够仔细可能你的代码连一个bug都没有。用笔和纸把思路记下来,思路差不多时,在开始coding。在具体纸质化的时候,你要明白你的需求大概会涉及到哪些内容和层次结构。你的改动点在哪里,你的接口和参数是什么。你要设计而不是仅仅是实现。

4.调试代码加减法
    在做报表显示的时候,由于里面涉及到js,这个自己不熟悉也就是去年的时候用过一点点,但是这次又需要用,为了最小范围的改动代码,我选择了复用DO对象,这个对象是前端js可以自动拆装的。实际上证明是可行的,第一个表被我显示出来了。当我第二次在用这种方法时,一直显示不了。延辉后来帮了我,他给我详细演示了减法的原理,就是从外部程序向内部逐步深入。所有的代码在执行的时候,假如到了某一个断点,断点前面执行的是一个集合,断点后面还没有执行的是一个集合(不管程序有多么的复杂,数量是多么的庞大),如果问题出现了,肯定是在没有执行的部分,接下来就是做加法,将未执行的代码最复杂的部分(估计)先删除用最简单的部分代替(hello-word),看看能不能输出结果,就知道问题在哪一块。典型的区间套理论的应该。加法不用说了,就是知道问题了,先还原以前被减掉的代码。调试出了问题的代码。就这样第二个表做出来了。

2014/01/06---2014/01/10

1.webx的依赖注入
    由于在Scout项目中webx是比较老的版本,导致用@Autowired注入失败,必须用setter方法注入,最后查原因是代码复写了注入接口。

2.分页和搜索
    开始以为分页和搜索时很困难的工作,一开始就没有做,后来还是觉得做一下试试看。主要是要搞清楚分页的原理:就是每次根据pagesize和pageno的数目计算要取得的子结构(一个list对象子集,对应的就是标的行对象)。在做的时候要注意获得总的数据数目,bug前的做法是在ots tool类中设置变量,在每一次取得rows时随便计算总数,然后在上一层调用,后来发现这种方法是不行的。主要是有可能出现线层安全问题。最好不要在静态类中设置变的状态量。

3.测试手段
    在测试的时候由于数据少,如果指定某一个custid和dramndn_seqno就是因为获得不到值而无法显示结果的问题。为了不block我的测试,可以改代码,入口在正确的位置,代码经过的逻辑线路也是正确的,只是在条件查询时“篡改”代码让查询的条件变的更加宽松。这样的话就可以获得多条数据记录,测试分页的结果。

4.在使用工具上和大家保持一致
    为了以后少出错误,尽量使用和大家一致的工具。这样在遇到问题时有很多的人可以找,否则,自己一个人去解决花费的时间可能会很长。在和大家保持一致的基础上追求不一样。也不是一定不要标新立异,前提是你对某一个工具非常的熟悉倒是可以打破常规。

5,在写代码是先实现再重构
    一般有了思路后,第一步不是要写出多么漂亮的代码,而是尽量先实现。这样的好处是可以有一个原型可以参考,软件关键是思想。代码的完善可以放在后面来做。编码的指导是:思路--实现--完善。不是一开始就编代码,也不是一开始就要编很好的代码,而是这两者之间的一个折中。

6.代码中一定要保证是逻辑正常的
    意思是即使因为某些特殊的原因,代码中有些已经有变化,主要是在调试代码的时候,为了便于获得结果,修改了代码。这样做有助于调试代码,但是不利于代码版本的控制,如果不小心把代码传到svn上去了,自己有没有发现就会产生问题。一个好的做法是在每一次测试之后,将代码还原回正常的情况,以前的可以写成注解的形式,这样可以在下一次调试时直接取消注解就可以测试了。其实上面的方法只是缓冲之计,真正的做法是在测试环境放入足够有效的数据,这样才能更好的测试结果,也不会影响生产代码,便于维护。最后附上几张图:图一是调试放宽条件。


图二是分页效果图。

转载于:https://www.cnblogs.com/seasamsun/p/3515957.html

经验备忘2014年01月相关推荐

  1. 《Genesis-3D开源游戏引擎-FQA常见问题解答》2014年01月10号版本

    1.Genesis-3D开源游戏引擎主要面向哪些用户人群?有限制吗? 1.我们的引擎没有限制,只要您想了解和使用我们的引擎,就可以加入Genesis-3D的大家庭. 2.我们的主要用户群是各个相关的企 ...

  2. 2014年01月25日

    今天离春节还有不到一周的时间,意味着离回家的日子也在接近. 突然很是不想回去,不知道什么原因,也许是因为原因太多吧. 很烦. 我不知道你是什么原因不肯来我家,我家人不同意我们,你也不是我想象中的那么积 ...

  3. 豆豆趣事[2014年01月]

    [b]引言[/b] 豆豆:"爸爸,你上公园是不是不花钱?" "是." 豆豆:"那你得带点儿钱让我划船." 豆豆已经有点儿小心眼儿了,能转来转 ...

  4. “滴滴出行” 成长路径分析(2016年01月19日)

    [文章摘要]本文从产品和运营的层面深度分析和还原了 "滴滴出行" 这款现象级的产品在过去 3-4年 里是如何一点点从 0 起步,成长为现在 100 多亿美元级的庞然大物的.对于互联 ...

  5. 时间:2014年3月27日20:08:01网站建表实战与优化意识

    建表: SNS社交网站: 会员表:member Mysql中没有布尔型,相当于tinyint类型 false 就是0 其他都是true 大小 字节 列名称 列类型 默认值 是否主键 4 编号id in ...

  6. 2014年9月踏上北京的“不归之路”(01)

    2018年8月17日我兴起了写博客的兴趣.也许这就是回忆一下过去的我吧.我不知道我能写多久,我也不知道我能在IT这个行业能坚持多久,但我不会忘记我的初心. 2014年9月上帝是公平的,社会是残酷的,在 ...

  7. 资源 | AI、神经网络、机器学习、深度学习以及大数据学习备忘单

    向AI转型的程序员都关注了这个号☝☝☝ 以下是关于神经网络.机器学习.深度学习以及大数据学习的备忘单,其中部分内容和此前发布的<资源 | 值得收藏的 27 个机器学习的小抄>有所重复,大家 ...

  8. c# ui 滚动 分页_UI备忘单:分页,无限滚动和“加载更多”按钮

    c# ui 滚动 分页 重点 (Top highlight) When you have a lot of content, you have to rely on one of these thre ...

  9. hp-ux 单用户 启动_UX备忘单:搜索与浏览

    hp-ux 单用户 启动 重点 (Top highlight) When designing search results and interest sites, you have to keep i ...

最新文章

  1. 2021年度中国计算机大会的技术论坛,值得一谈
  2. 函数最值题目及答案_呆哥数学每日一题 ——多元函数求最值
  3. java环境变量立即生效_win7批处理环境变量立即生效
  4. 【笔记】一些linux实用函数技巧【原创】
  5. threejs骨架形状
  6. python 装饰器 java,python之各种装饰器的使用
  7. Java8 中通过 Stream 对列表进行去重的几种方法
  8. 【总结】大规模数据(300万条)测试时,需要注意的问题。
  9. 使用NVIDIA端到端深度学习平台进行缺陷自动检测
  10. CDR教程-使用调和工具制作三八天猫标志
  11. 前端js拼接Json字符串
  12. erlang httpc
  13. mysql sniffer 源码_MySQL 抓包工具 - MySQL Sniffer 使用小结 (含带general_log日志)
  14. stm32f103移植ucosIII系统
  15. [附源码]计算机毕业设计JAVA社区生鲜电商平台
  16. C#: //todo
  17. 测试管理工具之禅道的使用
  18. 【图文详解】【pycharm】pycharm更换背景颜色
  19. 从零开始—仿牛客网讨论社区项目(一)
  20. 数据结构必会|时间复杂度(附视频讲解)

热门文章

  1. REMIX 本地环境搭建指南
  2. 服务器常用陈列raid0,raid1,raid5,raid10(0+1)详解及区别
  3. AMD第七代桌面APU揭秘:主流首次上DDR4
  4. nginx+双tomcat集群负载均衡(一台机器)
  5. 问题 H: 简单的打折计算 山东科技大学OJ C语言
  6. 李雅普诺夫和MIT两个MRAC案例的xcos模型
  7. proe输入数字时成双出现_职场数据控系列,超市基础篇,商品双ABC分析法及应用...
  8. 感恩节专宠有礼,送3本技术好书
  9. 微信十年,领取纪念勋章头像!
  10. ImportError: cannot import name ‘Optional‘