新人刚入职如何看懂公司项目代码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
neimengwuyanzu
V2EX    Android

新人刚入职如何看懂公司项目代码

  •  
  •   neimengwuyanzu 2017-07-26 09:39:37 +08:00 35378 次点击
    这是一个创建于 3000 天前的主题,其中的信息可能已经有所发展或是发生改变。

    培训出来的,自学的 java 基础 培训 Android 拒绝作假 用真简历面试 入职 现在在公司 主管让看之前的项目,打开吓一跳 这么多
    有没有大佬可以说下怎么快速明白公司的项目 不让带回家 封闭式开发

    64 条回复    2017-07-27 15:28:36 +08:00
    zix
        1
    zix  
       2017-07-26 09:43:51 +08:00 via iPhone
    调试
    neimengwuyanzu
        2
    neimengwuyanzu  
    OP
       2017-07-26 09:44:40 +08:00
    突然发现之前有好多这样的帖子......忘了查发帖问了
    zix
        3
    zix  
       2017-07-26 09:44:53 +08:00 via iPhone
    项目大的话可以让相关的同事讲一下代码的主体结构和逻辑,也能省点时间
    neimengwuyanzu
        4
    neimengwuyanzu  
    OP
       2017-07-26 09:54:00 +08:00
    好的 谢谢
    find2bHusky
        5
    find2bHusky  
       2017-07-26 09:59:19 +08:00
    从首页开始看啊
    find2bHusky
        6
    find2bHusky  
       2017-07-26 10:00:23 +08:00
    找一个网络请求,看看网络请求框架,还有图片加载框架
    jason2017
        7
    jason2017  
       2017-07-26 10:00:50 +08:00
    先了解项目用到的框架 ssh 还是 ssm 或者是公司自己开发的框架,先把框架大概弄懂。如果是 web 项目,先测试环境跑通,了解业务,然后就根据项目去调试了解代码。
        8
    licraft  
       2017-07-26 10:10:57 +08:00
    先看懂整体结构,然后画类图整理代码逻辑,多调试
    maninnight
        9
    maninnight  
       2017-07-26 10:12:10 +08:00   1
    不耻下问,逮住同事就问,别怕被拒绝,胆大心细脸皮厚
    em84
        10
    em84  
       2017-07-26 10:17:00 +08:00
    跑起来
    CFM880
        11
    CFM880  
       2017-07-26 10:21:17 +08:00
    调新功能,修已知 bug
    nextbox
        12
    nextbox  
       2017-07-26 10:24:40 +08:00
    用业务逻辑一条一条串起来,从页面到后台接口
    然后再看看公共封装的方法
    架构上的设计

    这是我一般看公司代码的思路,希望对你有所帮助
    pcatzj
        13
    pcatzj  
       2017-07-26 10:28:02 +08:00   1
    现在的人都不爱用标点符号了。
    JustFuckingDoIt
        14
    JustFuckingDoIt  
       2017-07-26 10:28:26 +08:00
    看文件大小最大的那个,那个肯定包含主要逻辑
    wipen
        15
    wipen  
       2017-07-26 10:32:07 +08:00
    div class="reply_content">楼主做 Android,看公司的 Activity 基类,网络框架,图片加载框架,以及各种 UI 基类、组件。这些是你上手干活需要掌握的。
    置于业务逻辑做项目时自然就慢慢了解了,有活的公司也没有那么多时间让你一点点熟悉。
    HeroTop
        16
    HeroTop  
       2017-07-26 10:33:25 +08:00   2
    找个美女技术一直问
    Ouyangan
        17
    Ouyangan  
       2017-07-26 10:43:25 +08:00
    当然是改 bug
    gesse
        18
    gesse  
       2017-07-26 10:52:38 +08:00
    国内都喜欢造各种各样的轮子,

    萌新建议从使用框架、修改小功能入手。
    gesse
        19
    gesse  
       2017-07-26 10:53:25 +08:00
    国内都喜欢造各种各样的轮子,

    萌新建议从使用框架、修改小功能入手。

    这样既能从使用角度去了解项目,

    又能快速入手工作、稳定工作
    kinge
        20
    kinge  
       2017-07-26 10:56:34 +08:00
    想我这种都是直接导入 ide 用眼看
    iiqiu
        21
    iiqiu  
       2017-07-26 10:57:50 +08:00
    当然是...




    改 bug 了
    Just1n
        22
    Just1n  
       2017-07-26 11:06:17 +08:00
    调试。
    调试技巧是判断一个程序员能力的重要标准之一。
    greatghoul
        23
    greatghoul  
       2017-07-26 11:07:20 +08:00 via Android
    问同事
    Betacoefficient
        24
    Betacoefficient  
       2017-07-26 11:11:19 +08:00
    舔着脸去问同事。
    zengyuxi
        25
    zengyuxi  
       2017-07-26 11:16:52 +08:00
    没有交接吗!一上来直接看代码?
    看代码的话,老手的话,的确没问题,但新手,还是需要交接或讲解的!
    sfree2005
        26
    sfree2005  
       2017-07-26 11:25:09 +08:00 via Android
    除了代码,没有任何其他文档可以阅读吗?需求文档,API 文档,架构文档?如果真要看代码,从测试代码开始看,因为首先了解的是那些代码是干什么的才能明白它怎么干。
    BoiledEgg
        27
    BoiledEgg  
       2017-07-26 11:36:32 +08:00
    先问如何运行起来,从改 bug 开始
    ymcisokay
        28
    ymcisokay  
       2017-07-26 11:37:49 +08:00
    同新人今年刚毕业,来公司之后先培训了一下业务流程。现在组长给了一个早期版本的程序让我们先试着跑一跑调试一下,同时让我们自己分析比较 springmvc 和 struts2,hibernate 和 mybatis 等,大概一周交一次周报。现在在学习 ssm
    8355
        29
    8355  
       2017-07-26 11:41:55 +08:00
    多打印一下看看值是什么就知道了啊.
    其实你看不懂的只是有很多库你没接触过 有很多别人封装的代码你直接看名字不了解而已.
    你一层一层的点进去看看 最后可能只是有些函数没见过 查下手册了解一下就行了.
    如果底层代码可以看懂只是不明白为什么会这么写 就多去问问写的人 不过一般这种都是在注释上体现出来的.
    ytmsdy
        30
    ytmsdy  
       2017-07-26 11:42:58 +08:00
    选一个最基础的功能,比如说更新用户信息开始看。从前台看到后台,然后再到数据库,了解基本的数据流。
    然后就慢慢 debug 吧
    KNOX
        31
    KNOX  
       2017-07-26 11:52:00 +08:00 via Android
    先从框架入手,mainfest 文件,build 文件,搞清楚项目用了什么工具,分别怎么用,然后深入代码细节,业务逻辑不懂直接问同事。
    joeke
        32
    joeke  
       2017-07-26 12:05:12 +08:00 via iPhone
    脸皮厚很有优势
    winglight2016
        33
    winglight2016  
       2017-07-26 12:30:00 +08:00
    可以从 UI 交互看起,也可以从底层 http 访问或者持久化对象开始,看你自己的偏好了
    rason
        34
    rason  
       2017-07-26 12:35:16 +08:00 via iPhone   1
    拿起键盘复制粘贴就是干
    neimengwuyanzu
        35
    neimengwuyanzu  
    OP
       2017-07-26 12:39:21 +08:00
    @find2bHusky 好的,
    neimengwuyanzu
        36
    neimengwuyanzu  
    OP
       2017-07-26 12:40:11 +08:00
    @jason2017 公司申一 USB 接口貌似要很久,模器开起来都费劲
    neimengwuyanzu
        37
    neimengwuyanzu  
    OP
       2017-07-26 12:40:49 +08:00
    @licraft 好的,谢谢!
    neimengwuyanzu
        38
    neimengwuyanzu  
    OP
       2017-07-26 12:41:09 +08:00
    @maninnight = =!感觉这个方法是最直接的了
    LaudOak
        39
    LaudOak  
       2017-07-26 12:42:20 +08:00 via iPhone
    首先你要知道某个这个功能大体能做什么,然以点击事件,接口,网络请求等为入口看逻辑,层层深入看如何实现,代码干了什么事
    ob
        40
    ob  
       2017-07-26 12:45:22 +08:00 via Android
    我一般从 web.xml 开始。。
    colorwin
        41
    colorwin  
       2017-07-26 13:10:18 +08:00
    封闭式开发? 关小黑屋 12 小时的那种?
    ikeeper
        42
    ikeeper  
       2017-07-26 13:20:31 +08:00
    难道不是找离职员工留下的彩蛋?逃~
    HunterPan
        43
    HunterPan  
       2017-07-26 13:21:29 +08:00
    熟悉业务 改 bug 还是小功能开发起
    ty89
        44
    ty89  
       2017-07-26 13:46:48 +08:00
    朗诵并背诵代码
    sgissb1
        45
    sgissb1  
       2017-07-26 14:26:38 +08:00
    @maninnight 成语用的不准确了,不耻下问你要去查查是什么意思。
    sgissb1
        46
    sgissb1  
       2017-07-26 14:29:29 +08:00   1
    代码阅读理解分为几个关键内容:
    1,基础知识
    2,代码阅历和经验
    3,代码考古学
    4,情绪的自我控制与调节
    5,高效时间利用
    6,友善的同事和同事关系。

    其中最为重要的是 1、2、3,一旦拥有 1、2、3,就算情商为 0,也还是能够花大量时间去看懂部分代码的。
    你既然刚出第二个校门,那么你可以的做是,1+2,对于 3 来说那是工作一段时间之后潜移默化积累的(前提是你不断的看各种代码,开源或工作中的代码)。

    4、5、6 就不解释了,有工作经验的人多少会有一些感受
    neimengwuyanzu
        47
    neimengwuyanzu  
    OP
       2017-07-26 15:56:50 +08:00
    @colorwin 进出都要查包有没有带存储性的设备,这样算封闭么?
    neimengwuyanzu
        48
    neimengwuyanzu  
    OP
       2017-07-26 15:57:29 +08:00
    @JustFuckingDoIt 可以的 我也发现还有这个区别
    neimengwuyanzu
        49
    neimengwuyanzu  
    OP
       2017-07-26 15:59:01 +08:00
    @zengyuxi 没有 报道以后领导直接就说 你先看看之前的项目 也没有什么文档之类的 注释很少
    neimengwuyanzu
        50
    neimengwuyanzu  
    OP
       2017-07-26 15:59:44 +08:00
    @KNOX 现在还是用的 ADT 开发......
    ittianyu
        51
    ittianyu  
       2017-07-26 16:56:17 +08:00
    培训出来的 安卓 不造假还能找到工作?
    neimengwuyanzu
        52
    neimengwuyanzu  
    OP
       2017-07-26 17:09:35 +08:00
    @rason 大哥有没有具体的干法,用什么姿势
    neimengwuyanzu
        53
    neimengwuyanzu  
    OP
       2017-07-26 17:10:05 +08:00
    @ittianyu 嗯,工资不是很高
    ThatIsFine
        54
    ThatIsFine  
       2017-07-26 17:23:06 +08:00
    小伙不错.
    优先问问有没有开发文档, 业务逻辑培训文档.
    找人问是最快的, 当然也要拿着问题去问.
    millerspp
        55
    millerspp  
       2017-07-26 18:44:04 +08:00 via Android
    研究前台功能,再 debug 跟进去,看看怎么实现的
    neimengwuyanzu
        56
    neimengwuyanzu  
    OP
       2017-07-26 20:42:48 +08:00
    @ThatIsFine 好的 谢谢
    ryV60s
        57
    ryV60s  
       2017-07-26 20:57:17 +08:00
    先看功能,把功能熟悉一遍。
    然后逮着功能点一个个的抠细节,多看几个功能,用的哪些框架哪些用法就能了解得差不多了。
    iFlicker
        58
    iFlicker  
       2017-07-26 23:27:04 +08:00   2
    同新人,同 android,刚毕业工作一个月不到.

    去年实习的时候是个电商类 App, 用到了很多新东西(相对当时)什么 databinding mvvm 和 mvp 杂糅,rxjava,retrofit,还有很多大佬自己写的自定义 view 和 viewgroup.
    当时第一次看到项目也是懵逼的, 萌生退意觉得我的天这都是啥,我是谁我在哪儿我为什么要搞 android - - |
    后来让大佬多讲几遍,自己多琢磨多去查,慢慢的就熟悉了.

    现在正式工作也是 android,只不过是写 sdk . 入职第二天就给需求(大概是被高看了..?..(其实我感觉我好菜)..)..
    然后比实习的时候还懵逼,因为这边用到的都是比较基础的东西,还有很多之前写的不多的 service 啊很多 Broadcast 啥的.
    看项目呢比实习的时候还懵逼..完全不知道是啥..
    我这个人呢也不爱说话比较闷,也不爱问..后来带我的大佬就教育我~让我不懂就问直到自己懂了~部门里边人每天喊我一起吃饭感觉挺好的(相对来说比较照顾我这种闷罐子性格)~
    现在感觉好一些了,一些基本流程都搞的大差不差了,就是完成需求的时间比他们要高出好几倍的时间 ......

    其实我第一周入职的时候可难受了,看不懂也不爱问感觉融入不进去,天天想着我要不辞职回家算了..现在慢慢坚持了下来觉得也蛮好,因为我这种性格去哪儿都一样,还不如多改变自己.
    唉..废话说了好多.说点正经的,

    看代码的话一定要让带你的人给你讲一遍,一遍不懂讲两遍,
    然后自己回去看,如果是前辈们自己写的框架流程啥的一定要自己做个笔记, 可以用纸和笔也可以专门搞个文档,一定要记下来. 因为一般公司产品对于刚接触的人来说很庞大, 你不记下来很难保证你能全部理清.
    然后那些用到的开源框架啊库啊啥的去网上多查查自己多写写 Demo, 像 rxjava 那么多操作符,一定要写 Demo 的, 写了 Demo 最好要自己整理一套笔记.
    然后多和同事沟通..好像没啥了, 加油!
    iFlicker
        59
    iFlicker  
       2017-07-26 23:30:00 +08:00   1
    随想随说了.. 记得自定义 View 和自定义 ViewGroup 一定要自己多写, 别光顾看别人博客. 还有要注意内存泄漏, 没事买本设计模式的书看看敲敲.哇我知道的应该就这么多了 , 加油加油
    iEverX
        60
    iEverX  
       2017-07-27 00:23:44 +08:00
    在没有开发任务的时候,项目代码是怎么也不会看得恨透的。只能随着添加代码的时候,参照旧代码,一个函数一个函数的跟进去,再一点一点实现新功能,才能逐渐了解整个项目,开头不懂太正常
    iyuli
        61
    iyuli  
       2017-07-27 06:22:00 +08:00 via Android
    当年入职第一件事就是记各种简写及对应的东西
    JulyXing
        62
    JulyXing  
       2017-07-27 09:04:27 +08:00
    先把项目运行起来,然后找入口一步步调试。
    Immortal
        63
    Immortal  
       2017-07-27 11:48:43 +08:00
    跟着业务逻辑一起看 光看代码会被逻辑卡住
    pyxq
        64
    pyxq  
       2017-07-27 15:28:36 +08:00   1
    几点建议:
    1. 有项目文档的先看看项目文档(包括接口文档、设计文档、需求文档等),没有文档的让老同事讲一下项目是干什么的以及代码结构
    2. 抓一下请求包,知道什么接口对应 App 的哪一个功能模块
    3. 找到代码入口,先粗看再细看,粗看只需要看项目接口、代码调用链路、用了哪些存储以及存储的结构是什么样的等等,主要目的是对项目有一个整体的理解,细看就是详细看代码逻辑,不懂的地方可以 debug 单步运行看看
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2734 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 12:12 PVG 20:12 LAX 05:12 JFK 08:12
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86