V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
neimengwuyanzu
V2EX  ›  Android

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

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

    培训出来的,自学的 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 项目,先测试环境跑通,了解业务,然后就根据项目去调试了解代码。
    licraft
        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
    楼主做 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 用眼看
    ypzhou
        21
    ypzhou  
       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   ·   我们的愿景   ·   实用小工具   ·   1131 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:33 · PVG 02:33 · LAX 11:33 · JFK 14:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.