【定位思维篇】

第一步:看代码首先应该熟悉每一个功能模块,知道每个功能按钮是干什么用的,执行后程序会做出什么样的反应,一边研究每一个按钮的功能,一边思考它是如何和数据交互的和其他功能关联起来的!如果是我设计我将如何设计,思考将贯穿始终,看代码一直是思考和记忆力以及耐力的综合考量!如果你没这个勇气或者说你不想这么做,那么你的技术将永远不会提升,你也将永远的被进不到“大师”的行列!

第二步:打开“解决方案”,看到有很多项目,并且这些项目的名字几乎相同,虽然很难记,但是你仍然要用心的记下来,并且知道每个项目所负责的功能,然后打开一个项目,仔细去分析这个项目的具体实现方式!以此类推其他项目也这样做下来!

第三步:然后按照分层的方式去分析,比如说三层架构,一般都是用的三层架构:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。按照这种方式去分析项目框架及设计模式的方式!研究作为架构师的设计思路!

第四步:纵向分析-研究功能模块,当我执行某一个功能模块时,所有设计的、需要执行的代码都是哪些,怎样获取数据的、怎样把数据传过来的、怎样连接起来的、这样设计有什么好处等等等!一定多问自己几个为什么!

定位的目的是为了验证我们的猜想,在代码定位中,首先要明确你的定位目标是啥,想一想有哪几种导致问题的可能,思考这个功能会是怎样的实现方式。

定位具体代码的过程,学会分析判断哪些方法是重要的跟业务关联大的,定位不是每行代码走一遍,要学会抓住关键,花精力在重要的、疑点多的部分。

【定位思路篇】

从语言特性、业务层面、代码设计角度去思考一个问题的定位思路,可以避免你钻的太细,站在更高的角度去处理问题。

一、语言特性

1、底层

前台主要用到Swing开发,定位过程可以从JDK底层源码去触发,还有一些组件特性。

例如:按钮点击事件,底层的触发方法fireActionPerformed(ActionEvent),通过底层实现的角度找到具体代码。

找到界面类后,JTable,TableModel运用的很多,了解这2个类的设计特性,能更快定位问题。表格的设计体系比较大,针对于表格的相关类还有,JTableHeader、TableCellEditor、TableCellRenderer、RowSorter、TableColumnModel等,我们从主要的部分入手去学习其他相关类的作用就行了。

表格的设计运用了MVC设计思想,JTable负责界面交互,TableModel负责数据存放,常见方法IsCellEditor(),getCellEditor(),setValueAt()等,这几个方法跟数据交互比较多。

2、实现流程

例如:

(1)web项目,主要用到html、js、css,html做页面展示,css做页面样式定义,js定义交互动作。代码中实现一个Servlet,处理get和post请求方式

一个界面以html文件实现为主,引用css样式,javaScript动作,一些文件例如XML解析是放在Java代码中的,这就是主要的语言间搭配的流程,对于具体的设计就要从代码设计和架构角度思考了。

(2)前台swing界面实现

有一个界面类,添加各种组件,在组件之上,实现组件相应动作(事件),然后就是前后台业务交互流程(进程和F接口)和数据的处理,后台主要做业务处理和跟设备打交道确认规格,前台主要负责数据在界面上的展示和界面交互。

二、业务层面

如果对业务比较了解,在定位到具体代码后,通过业务功能指导代码定位,查看代码实现过程是否ok,每一个方法应该实现什么样功能,可以忽略语言特性和语法,关注到功能重点。对业务的理解,有两个途径:通过业务规格文档学习,另外就是从已有项目代码去了解业务。

三、代码设计角度

用到了那些框架,这些框架的特点和意义,使用了什么设计方式等。比如,前台资源文件统一存放描述信息,表格配置文件用于定义表格信息,让代码关注功能和业务,分离表格配置和功能实现,是另一种程度的解耦。

四、定位技巧总结

了解eclipse快捷键(搜索,全项目引用,本类引用,查找等),方法outline概览,debug调试技巧(条件断点,watch)提高代码定位效率

1、搜索字符串,找到定义文件,找到使用该文件的类(字符串要有唯一性,找的更精确)

2、AbsractButton类

按钮点击查找:fireActionPerformed

单选框、复选框查找:fireStateChanged

3、JComboBox类

下拉框下拉项被点击查找:fireItemStateChanged

JTabbedPane等类可类似找通知方法

注:有些时候通过事件找具体类比较复杂,可以加上构造函数辅助定位

4、  菜单类问题定位

(1)菜单类继承自AbstractButton,通过该类定位到菜单

(2)菜单类有创建菜单方法,通过资源文件加载菜单项text,并可以在资源文件中找到对应的方法

(3)菜单事件回调,找到监听类,查找菜单方法

5、通过局部类——》大类

(1)通过debug找到局部类,再查找引用该局部类的类(更大的类)

(2)快捷键+分析

(3)搜索层级多,记录关键操作

(4)带着目的读代码

java开发定位思维和思路相关推荐

  1. java开发入门思维导图,java秒杀系统面试题

    前言 在本篇文章开始前,我想想来回答一个问题:我为什么要写这一篇关于面试的文章? 原因有三:第一,我想为每一个为梦想时刻准备着的"有心人"尽一份自己的力量,提供一份高度精华的Jav ...

  2. 蓝桥杯2018省赛Java开发大学C组思路总结

    1.标题:哪天返回 小明被不明势力劫持.后被扔到x星站再无问津.小明得知每天都有飞船飞往地球,但需要108元的船票,而他却身无分文. 他决定在x星战打工.好心的老板答应包食宿,第1天给他1元钱. 并且 ...

  3. 敬请期待!《Java开发手册》灵魂13问,深度剖析一线大厂开发思维

    一线大厂怎么用Java? 看千万阅读量技术博主给你分析! <〈Java开发手册(泰山版)〉灵魂13问>电子书即将上线 带你剖析阿里巴巴一线团队开发思维 正式上线时间:2020年5月6日 8 ...

  4. javaweb 图书管理系统完整代码_看一名Java开发人员以红队思维五分钟审计一套代码(续)...

    前言 上篇文章的发布引起了很多读者的浏览,有很多读者也催更希望读到续集,作者也收获到读者的鼓励,说明这条路线对大家有帮助,是有意义的.所以,今天作者将继续阐述在审计Java代码时的思路. 概述 上篇文 ...

  5. java开发调试定位分析工具大全

    Java是一种非常强大的编程语言,自问世以来就广受欢迎.作为现今十分流行的移动平台--Android的核心语言,它大大促进了移动通信行业的发展.因此可以肯定,随着Android平台的不断扩张,Java ...

  6. 《码处高效:Java开发手册》之代码风格

    流水淡,碧天长,鸿雁成行.编码风格,简捷清爽,反引无限风光.   在美剧<硅谷>中有这样一个经典镜头,主人公 Richard 与同为开发工程师的女友闹分手,理由是两人对缩进方式有着截然不同 ...

  7. 减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同

    转:减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同 本篇文章讨论并不是:不要使用存储过程,因为有些事情还是要存储过程来完成,不可能不用.而是关于:"业务逻辑是不是要封装在存 ...

  8. 玄子Share-BCSP助学手册-JAVA开发

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b2gPyAnt-1676810001349)(./assets/%E7%8E%84%E5%AD%90Share%E4%B ...

  9. 2021秋招高频面经汇总(Java开发岗)

    1.G1为什么高吞吐量 G1多线程并行并发 2.B+树解决什么问题 解决查询遍历太深的问题 3.硬连接和软连接 硬连接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用. ...

最新文章

  1. 十天学会php之第五天
  2. 川大优秀毕业生在GitHub上建了一个项目《深度学习500问》,还未完结就获赞无数
  3. 自定义数组操作工具类代码示例
  4. MVC之排球比赛计分程序 ——(二)架构概要设计
  5. 生成有时间限制的二维码_二维码竟有被用完的一天!看到截止日期后,网友:虚惊一场...
  6. Python+pandas查找前5位成绩最高的同学与前5个最高成绩的同学
  7. 虚拟服务器的密码忘记了,忘记虚拟密码
  8. struts 2.3.8备忘
  9. sql 去掉重复的数据
  10. 计算机无法安装dx11,dx11组件是什么?提示缺少dx11组件的具体安装步骤
  11. 三十、在实践中培养和选拔干部(第1版)
  12. java猜数游戏图形界面_java 猜数字游戏 swing实现带界面
  13. Miles per gallon to kilometers per liter
  14. 每个人都能制作的简易版狂拍灰太狼小游戏(HTML+CSS+JavaScript)
  15. 海底捞月战法实战讲解
  16. 第一届中国数字藏品大会顺利召开
  17. 无线通信协议wifi、BLE、zigbee
  18. 牛客--剑指offer,JZ3,JZ4,JZ5,JZ6
  19. 程序员:不要自称为码农
  20. 手机移动端web总结

热门文章

  1. 了解 Boost Filesystem Library
  2. python多线程文件的数据续传_python38 1.线程一堆队列 2.事件Event 3.协程 4.断点续传...
  3. PyQt5桌面应用开发(2):事件循环
  4. 袁国宝:滴滴如何给网约车司机们,系上温情的“安全带”?
  5. 爱思助手安卓能用吗_更好用的Windows版签名工具来啦,操作非常简单,无需越狱!...
  6. Oracle 11.2.0.4 RAC 手动打补丁
  7. 优秀的GitHub开源项目介绍
  8. 银行“跑马圈地”新零售,AI大数据成“加速器”
  9. pytorch.tensor常见操作
  10. 热解反应aspen_Aspen Plus 学习笔记(2):热解