目录
  • 维护项目

    • 最重要的事儿
    • 接手方法:不变应万变
    • 维护实用技巧:
    • 项目的常见套路
    • 熟悉项目的套路
  • vue 项目
    • 快速梳理大型vue项目整体架构技巧方法总结
    • 快速熟悉内部组件模块技巧方法总结
    • 提升工作效率 代码编辑工具WebStorm的使用
    • 运行技巧

维护项目

参考博客:

  • 【程序员怎么快速接手一个项目】
  • 【程序员如何快速上手一个自己不太熟悉的新项目?有什么技巧?】

最重要的事儿

如果你总是看见代码多就发愁,看见代码脏乱差就诅咒埋怨,看见代码逻辑复杂就头疼,搞不清调用关系就放弃,那你可能永远也变不成代码的主人,只能一次又一次被代码蹂躏。

所以,其实交接代码最重要的事儿,就是:

不要被浩渺如烟并且陌生怪诞的代码吓得不敢动弹,现在就开始读,立刻,马上,坚持十分钟,再坚持十分钟,你就能妙悟真谛。

【注意心态】:不要以追求完美的心态去接手项目,不要试图搞懂整个项目。

千万不要找到对应的控制器方法,一行一行读代码!!!!因为过去的功能已经完成了,需要修改该功能时,你才需要读过去的代码,方便修改。即使遇到不会使用的框架也不要紧,你知道业务逻辑后,可以直接写原生。

要的是结果(老大要功能以最快的速度做出来),以任务为第一。让自己的价值先绽放出来,而不是自己的研究学习能力。否则,会出现,你研究了整个项目的框架结构,熟知了所有的技术要点,却被无情的踢了出来,因为你的价值并没有表现出来

接手方法:不变应万变

1.项目维护有三宝:沟通 、文档 、代码跑。目标:了解业务逻辑流。

这三点很好理解,初步接手要请教前辈给你点一点业务重点、难点,让自己熟悉下;接着就是看系统的文档了,可以让自己迅速的了解整个项目的方方面面;最后就是走代码,因为前辈的指点可能有误,文档的书写可能有漏,作为一个优秀的程序员只相信自己走的代码,用自己的代码去验证文档,才是最正确的做法。文档只是给了你方向。走代码才能真实的了解具体的业务逻辑

2.重点攻击:数据结构+ER模型。目的:熟知项目的数据结构关系。

其实从事多年的老鸟可以发现,不管是C/S或者B/S,怎样的开发最后都是无非是底层数据库的数据排列筛选好后传递到前台。所以对待一个新的项目,去研究它的数据结构和库表是很有效的。这就要求我们对数据结构这块进行深入研究。

项目出活四部曲,跟、改、理、测要一起。

  • 跟:抓住一个功能点,深入的调试跟踪流程,分析代码直到弄明白为止。
  • 改:修改源代码,编译运行,看修改前后有什么变化,这是感知代码用途的最佳途径。
  • 理:尝试弄清整个项目的业务逻辑
  • 测:熟悉业务逻辑后,清库测试,测验是否符合自己所想。

维护实用技巧:

  1. 任何举动要备份
  2. 修改代码涉及到很多的依赖,所以新增代码相对而言风险较小。(时间充足:对方法进行包装或者重写,甚至是直接修改)。
  3. 多和原设计人员交流;

总结:要不停的试,不停的改

通用步骤:

1、找nginx的配置文件,看看项目放在服务器的哪个地方(由于是接手多个项目,都是以虚拟主机来放的)| 5分钟

2、找对该项目熟悉的产品经理或同事(也包括测试)给你演示一把怎么用,顺便请教下主要功能。 | 30-60分钟

  • 分开问,软件不会用,讲逻辑找产品;
  • 某些技术、代码看不懂,问搭档;
  • 整体项目的把控问项目经理;

3、小试牛刀:先熟悉软件的前后台各种操作,能体验的都体验一把(尝试修改某个功能,有好多个环境,在本地改)。

4、记录项目中该领域的专业词语,找机会和同事请教,弄懂这个词在这个领域是个什么概念

思路1的具体步骤(从上而下):

5、打开f12看network找他前后台菜单中对应的控制器(有的请求是在html中用a标签跳转的)。找到每个功能的对应的【增删改查】或每个功能对应的方法名称。如有没见过看不懂的罕见写法,查该版本的手册,切记,统一框架不同版本的同一个方法用法可能都不一致

6、看他每个功能对应的控制器方法中的sql语句的构成

7、通过echo打印原生的sql语句(TP框架,拿sql语句的对象->getLastSql()),看查出来的结果是什么,及通过视图渲染到页面的数据

8、看他的数据库设计,先在心里把表分个类(如 用户的、商品的),然后找外键关系

9、不要看完就了事,看完是记不住的,过俩天也都忘了。在旧项目中新建个控制器,模拟个功能点,模拟人家写的方式,自己写套增删改查操作数据库,展示给页面

思路2的具体步骤(从下而上):

1、先看公共函数库,传正确和错误的参数,分别测试,看出来的是什么东西。不要看函数中的每一行代码

2、多层继承的话,看他父类,父父类中,大概都有哪些方法,这些方法是做什么的,在心里记个大概

3、看控制器方法中,打印最后的结果,然后看视图层,是怎么展示的

项目的常见套路

  1. 绝大部分业务系统,不管他后端是oracle、mysql、nosql还是内存数据库,也不管他前端是web、h5、winform、android还是ios,它的核心功能都是由增删改查组成然后通过通信、运算和人机交互串起来的,系统的复杂度主要体现在系统规模、性能、稳定性、业务流程、通信等方面。(部分工具类、基础架构类系统可能不一样)
  2. 绝大部份系统,不管是基于Java、.NET、C++还是Nodejs技术,都是遵循某种或几种设计模式分层进行开发的,最最常见的也就是MVC了。其他请参考一下设计模式教程。

熟悉项目的套路

  1. 先搞清楚新的系统是搞什么的,就问简单几个问题,谁在用这个系统?用这个系统做什么?然后自己根据这些问题去文档找答案。

  2. 弄清楚系统是怎么分层、分模块的,每层、每个模块都用到了什么技术和框架,之间是怎么通信的。有架构设计文档的话学习一下最好,没用过的技术先查查资料知道个大概。

  3. 把开发环境搭起来,通过几个典型的功能弄清楚系统里面增删改查、通信、用户交互是怎么实现的。最简单的方法是根据系统的分层,先从前端到数据库把代码疏通一下,搞不清楚的话打开debug模式一步一步走一下。

  4. 经过上面三个步骤基本上就可以改几个bug和照葫芦画瓢做个功能了。后面重点关注那些没用过的技术和组件:先搞清它的目的、背景、实现原理和功能列表,再照着文档做几个demo,平常工作时把它的文档建个快捷方式,随手查询学习一下。

  5. 平常开发过程中如果遇到问题首先要相信:
    1)绝大部分自己遇到的问题很多人已经遇到过并且解决了 。
    2)绝大部分自己遇到的问题在当前系统里面已经有了答案。
    3)绝大部分自己遇到的问题在你用的框架和组件里面都有现成的解决方案。

  6. 对于规模比较大的系统或者系统集合,其实你平时工作接触到的也就是其中的一个系统或者模块,先把自己接触的部分搞定就行了。

  7. 对于老系统,首先建议看一下我另外一个回答:在感觉项目代码的构架不行的时候,你们会怎么办? - Jim Jin 的回答
    1)老系统其实满是宝藏,里面有很多你可以借鉴和学习的东西。
    2)老系统也满是坑,一个看起来毫不悬念的代码改了以后可能会引发地震。
    3)很多你看着不爽的代码其实都是有道理的。
    4) 不要在老系统里面继续挖坑。
    5)看不懂的代码不要动。
    6)在你力所能及的范围内让老系统变的更美好。

各位朋友一定要注意:
1、在管理者看来,重构前辈的代码是没什么绩效的,而且风险还大。而救火、在臃肿老代码上不断加东西实现业务需求是有实实在在的绩效的。
2、整天提重构还容易得罪人。你抱怨别人架构垃圾,整天嚷嚷要重构,你可知道,这个架构正是当年某位前辈设计的,这前辈现在是你领导的领导呢。

所以,职场的事情,复杂得很,不可只从技术角度看问题。

vue 项目

参考博客:

  • 【入职一个月快速熟悉大型Vue项目经验感想】
  • 【记录接手一个 VUE项目的初始操作】

快速梳理大型vue项目整体架构技巧方法总结

  1. 首先对于Vue Cli搭建的项目,一定要知道项目的目录结构,如果目录结构都不了解,那一定会很头痛
  2. 查看 package.json 配置文件,了解项目引用了哪些额外插件和框架
  3. 查看 router 文件,可以快速梳理项目脉络(非常重要!)
  4. 查看 vuex 文件(如果项目使用了 vuex,那vuex在其中一定扮演着非常重要的角色 ,时不时一些数据就是从vuex中取得的),通过这点可以大概明白整体项目的数据流向;除此之外通过vue devtool查看vuex也是个方法
  5. 一定要看的main.js入口文件,其中vue.use()和import 引入的文件都对梳理项目架构很重要
  6. 扫一眼一般src目录下的components组件

快速熟悉内部组件模块技巧方法总结

作为一个谦卑的初级程序员,刚开始到公司接触大型项目做的工作通常是改改历史遗留问题的bug,写写模块或者组件内部的一些小逻辑以尽快熟悉项目整体架构。有时候一些简单的小问题放到大型项目中,汪洋般的代码量让你无从下手,就算通过开发工具快速找到了目标代码,也不能很快熟悉里面的逻辑到底是怎么一回事儿。经过一段时间的折磨,笔者积累一些自己的方法和技巧。

  1. 找到该组件的name,从routers里面看该组件是否有对应的路由,这一步判断组件在全局架构中的位置
  2. 先看import的引入,判断模块内引用了哪些组件和方法,从components中看到引入了哪些子组件。也可以借助vue devtool工具看组件的使用情况
  3. 快速扫一遍html结构,结合浏览器的审查元素查找目标改动位置
  4. 比起漫步目的的找代码,不如先看一下data()和methods(),这里面的代码注释和规范命名很重要,一定要起语义化、命名规范的名字,对自己好也对他人好
  5. 在数据这一块,要优先看一下生命周期钩子,created(),beforeMount()等,了解这一模块的数据是在哪个时期获取的,是在组件初始化的时候还是中途发送请求获取的?等等
  6. 数据这一块还要尤其注意一下有没有从vuex中拿数据(如果项目使用了vuex的话),尤其注意...mapState ...mapAction ...mapMutations的使用
  7. 注意组件内部有没有使用mixins混入,这里面定义了一些通用的公共方法或者计算属性等等
  8. 组件内部嵌套了组件,就要多注意一下props和父组件监听的子组件$emit的方法

提升工作效率 代码编辑工具WebStorm的使用

  1. 快捷键的使用:

    1. Ctrl + F 非常重要!!!在茫茫代码海中找到你真的不容易,Ctrl + F 在手一定会找到你,F3 和 shift + F3明明白白上下切换找你。如果你真的一行一行找大量代码,估计要么错过要么找到目标的时候已经忘了自己要找它干嘛了
    2. Ctrl + 鼠标左键 点击函数名快速跳转到函数声明
    3. 双击shift 或者 Ctrl + shift + F 在整个目录中全局搜索目标代码;ctrl+shift+N 通过文件名快速查找工程内的文件
    4. Ctrl + F 选中目标代码+ Ctrl + R 快速替换
    5. 选中函数定义,Alt + 上下 快速跳转函数名(找一下 VSCode 里的快捷键)
    6. Ctrl + shift + 回车上面的删除键Back 快速回到上次编辑的位置(找一下 VSCode 里的快捷键)
    7. 选中一段代码,右键选择 local history 可以看到一段代码的历史改动情况
    8. ......
  2. webstorm 菜单栏上的 VCS 以及对 Git 非常友好的可视化界面 (终端控制处的Version Control里可以清晰地看到提交的分支情况等等...)
  3. 待探索中...

这些总结可能还不太成熟,但随着时间的积累,对如何快速熟悉大型项目会积累更多的经验,学会更多的技巧。

很想再提醒一下自己,方法很重要,看代码敲代码都要掌握好方法。

加油,永远年轻,永远热泪盈眶!

运行技巧

  • 建议看一下 README.md 文件。一般情况下,项目的创建者都会大致写些东西在里面

  • cnpm install安装项目依赖(自动根据 package.json 来下载的)(没有 cnpm 自己百度装一下,比 npm 速度快点)

  • 看看 package.json 文件里的 scripts 了解项目通过什么命令启动(cnpm run server/dev)

程序员怎么快速接手一个项目-接手项目指南相关推荐

  1. 程序员如何快速上手一个自己不太熟悉的新项目

    程序员如何快速上手一个自己不太熟悉的新项目 在知乎上看到的,由作者Jim Jin(奔四老码农,只想做点有意义的事情)写的. 原文出处:http://www.zhihu.com/question/388 ...

  2. mysql怎样搞一个项目_程序员如何快速上手一个自己不太熟悉的新项目?有什么技巧?...

    不知道你有没有经历过一个五年或者更长工作年限的开发人员半路加入团队的情况,可能第一两个星期他会问一些业务或者技术问题,不过一两个月他就可能在指导那些初级开发人员了. 什么原因呢?因为他已经从过往经验里 ...

  3. *【思路】程序员怎么快速接手一个项目

    可能不管新手老手有些程序员,接手一个项目之后都会多少有些迷惘. 以下是本人总结出来的一点小心得,如果错误希望大家给我留言,一起讨论: 最重要的事儿 如果你总是看见代码多就发愁,看见代码脏乱差就诅咒埋怨 ...

  4. 如何顺利接手一个中途的项目

    一. 前言 随着经济的全球化和信息技术时代的到来,企业面临的竞争环境不再局限于某个地区或某个国家,而是面对全球的竞争.要想成为经济浪潮中的常青树,企业就要不断的进行创新和变革,进行战略方向.组织结构和 ...

  5. 【知乎】怎么成为一个优秀的程序员,而不是一个优秀的码农?

    怎么成为一个优秀的程序员,而不是一个优秀的码农? 9 条评论 分享 默认排序按时间排序 98 个回答 3844赞同反对,不会显示你的姓名 萧井陌 微信公众号:炼瓜研究所 技术社区 - 3844 人赞同 ...

  6. 程序员怎样学习python_一个开发十年的程序员论:学习Python最正确的步骤(0基础必备)...

    很多人都在问Python学习步骤应该如何安排?多长时间可以达到精通呢? Python学习步骤应该怎样安排: 首先,学习Python编程技术,自学或者参加培训学习都适用,每个人都有自己的学习方式和方法. ...

  7. 今天一个大龄同事被辞退了,顿时让我思绪万千。程序员32岁是一个坎,大龄程序员的出路到底在哪?

    文章目录 大龄程序员的出路 路径一:成为更高阶的程序员 路径二:转型管理层 路径三:转型产品经理 路径四:转型项目经理 今天是腊月十五,当大家参加完年会,期盼着发年终奖回家过年之际,而一个大龄同事被辞 ...

  8. 2年以内初级程序员如何快速踏实地提升自己的能力?

    1.不能光有决心,一定得多用时间学习 我见过不少程序员一点点从初级升到资深开发,少得用1年半,多的用3年,成功完成升级的都有一个共同点:进步得靠学习,学习得靠时间堆砌. 我个人不算聪明,所以我对曾国藩 ...

  9. 面试IT公司的时候,Java程序员的简历应该写多少个项目经验比较合适?

    往期精选 ●  架构师高并发高性能分布式教程(4000G) ●  39阶段精品云计算大数据实战视频教程 ●  互联网技术干货视频教程大全[菜单为准] ●  2017年8月最新Intellij IDEA ...

最新文章

  1. android 访问http地址吗,浅谈android访问http原理
  2. Codeforces Round #513
  3. 【项目】springboot中使用kaptcha生成验证码,登录时密码加盐处理
  4. 回调函数与DOM事件
  5. PCH文件的创建和配置
  6. DB2常用错误代码大全
  7. linux下mysql启动失败问题解决(CentOS7)
  8. 不要问我有多懒,写个脚本跑django
  9. opencv的下载报错解决
  10. win10环境下如何安装CAD
  11. 天顶角、太阳方位角和太阳高度角辨析
  12. 多幸运用计算机演奏的乐谱,多幸运简谱-韩安旭演唱-孙世彦制谱
  13. 麦考瑞大学计算机专业,麦考瑞大学计算机专业
  14. 9款好用的SSH客户端软件推荐
  15. 实验2 运算器的编程实现
  16. 概率论及概率图模型基础
  17. LLC环路计算与仿真分析——K因子法
  18. react antd的关于图标两个小问题
  19. 高通被判滥用垄断地位;Apache 回应:参与开源不受 EAR 约束
  20. 【LeetCode】334. 递增的三元子序列

热门文章

  1. 影像真伪鉴定系统功能详解
  2. 第52课:蘑菇云Spark大数据项目数据建模
  3. ESP32-C3入门教程 问题篇③——abort() was called at lock_acquire_generic at /esp-idf/components/newlib/locks.c
  4. 如何搭建HTTPS服务?申请免费的https的证书
  5. 字符串转int:处理8,10,16进制以及处理无效字符
  6. 南通大学计算机组成原理实验三,2016年南通大学计算机组成原理复试笔试仿真模拟题...
  7. 关于POSTMAN无法安装的解决方法
  8. matlab重排矩阵,重构和重新排列数组
  9. 树莓派上的tensorflow视频识别+远程视频流传输
  10. linux 运行asf云挂卡,Linux使用ASF云挂卡(挂游戏时长)