如果给了你一个项目的源代码,你确定能看得懂吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nnws2681521
V2EX    PHP

如果给了你一个项目的源代码,你确定能看得懂吗?

  •  
  •   nnws2681521 2018-03-22 14:52:00 +08:00 6238 次点击
    这是一个创建于 2763 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如给你了一个项目的 C++或者安卓或者 IOS 或者一个论坛或者一个博客的源码,放在那里你确定能看的懂? 好比一个博客系统源码,首先设计师没有告诉你每个文件夹到底起什么用吧?怎么能明白

    16 条回复    2018-03-23 12:42:53 +08:00
    xomix
        1
    xomix  
       2018-03-22 15:00:44 +08:00
    有文档肯定是看文档。
    没有文档怎么办?
    1、先看看能不能跑起来测试,如果能,跟着测试拦截对应功能,然后由点到面的放大了看,一个下午前后你应该能找到整套项目的大致框架。
    2、无法编译无法运行属于不能测试的项目,这种一般我先去数据库转一圈看看数据库结构什么的然后按照实际业务需求找数据库关键点,然后搜索反查。没有数据库的就看看资源文件找到几个重要的入口点,按照目录结构大致浏览一下等等。
    3、如果这些都没有……我觉得你可以随机打开一个文件放着等下班,然后下班找新工作,真的,这种东西谁要看啊什么也没有一团代码没有任何说明没有任何可以下嘴的地方,就每天开几个代码窗口糊弄领导混工资找新工作吧。
    hidder
        2
    hidder  
       2018-03-22 15:24:02 +08:00
    楼上正解,遇到这种公司不跑,难道留着过清明?
    luoway
        3
    luoway  
       2018-03-22 15:27:00 +08:00
    @hidder 看不懂就跑?

    编程是相通的,差别只在语言语法。
    啃还是能啃动的,就看钱给没给够。
    guoyuchuan
        4
    guoyuchuan  
       2018-03-22 15:32:05 +08:00
    公司给我的项目,我是看不懂。
    pkookp8
        5
    pkookp8  
       2018-03-22 15:39:23 +08:00 via Android
    首先看怎么编译,看文件夹名字猜内容
    当然如果名字都是 abc,nicai 这样的,趁早跑路
    能编译通过,反复上述步骤。不过一般方法是改问题的过程中熟悉代码并创造新的代码
    qwx
        6
    qwx  
       2018-03-22 15:47:31 +08:00
    代码混淆了解一下。搞逆向之类的怎么可能存在看不懂的代码,时间问题而已。
    geeksu
        7
    geeksu  
       2018-03-22 15:47:34 +08:00
    先跑起来再说,然后断点或者打印 log,把程序逻辑跑清楚
    zjsxwc
        8
    zjsxwc  
       2018-03-22 15:50:45 +08:00
    只要是之前被不少人过维护的代码,

    给钱花时间总能看懂的,但问题是那点工资和耗费的精力值不值,不值就跑,很正常的
    nnws2681521
        9
    nnws2681521  
    OP
       2018-03-22 16:52:11 +08:00
    问题是 web 项目的文件夹建的太乱了,如果你要是英文意思最起码跟着英文意思来吧,坑爹的是不是根据英文意思建的文件夹,而是这个字母英文里面是桌子的意思,咋看懂
    yang2yang
        10
    yang2yang  
       2018-03-22 17:53:24 +08:00
    其实最重要的是要有经验,也就是你大致了解这个业务,和编写过业务代码,才能看懂。不然,必须有人讲解还是加上自己辛辛苦苦看
    justinwu
        11
    justinwu  
       2018-03-22 20:59:59 +08:00 via iPhone   1
    一看就知道没撸过 souce insight,

    当年维护芯片厂商给的驱动代码、专有 rtos 内核代码,有谁指导谁来讲解,为了解 bug 还不是钻进去看,一点一点看、加打印看 log、gdb 调试。

    拿人钱财替人消灾,你来就是来解决问题的,动不动就喊跑,这个不好。

    注意:一定要带着问题去看,不能漫无目的去看。
    iRiven
        12
    iRiven  
       2018-03-22 21:34:09 +08:00
    懂是不可能的 我自己写的代码 我自己都看不懂,改代码改多了,很多变量名都是约定俗称的样子,函数明什么的,看名称,剩下一半靠 ide 补全
    Jimjay
        13
    Jimjay  
       2018-03-23 07:57:23 +08:00 via Android
    一看楼主就没当过接盘侠
    GentleSadness
        14
    GentleSadness  
       2018-03-23 10:16:52 +08:00
    @xomix 无法编译无法运行属于不能测试的项目,这种一般我先去数据库转一圈看看数据库结构什么的然后按照实际业务需求找数据库关键点,然后搜索反查。没有数据库的就看看资源文件找到几个重要的入口点,按照目录结构大致浏览一下等等。

    @luoway 上面这种情况都运行不了,你觉得还能救?
    xomix
        15
    xomix  
       2018-03-23 10:37:26 +08:00
    @GentleSadness
    3、如果这些都没有……我觉得你可以随机打开一个文件放着等下班,然后下班找新工作,真的,这种东西谁要看啊什么也没有一团代码没有任何说明没有任何可以下嘴的地方,就每天开几个代码窗口糊弄领导混工资找新工作吧。

    这不是给了解决方案了吗,拿着工资找工作不好吗,非要辞职没饭吃怎么办
    vagranth
        16
    vagranth  
       2018-03-23 12:42:53 +08:00
    按顺序来
    1. 如果代码自解释,变量命名和函数命名规范,那么直接看代码;
    2. 如果有文档,结合文档看代码
    3. 如果有具体 Bug 需求,结合 Bug 加调试语句分析代码
    4. 如果没有需求就是瞎看,代码又混乱,那么滚犊子
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5093 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 09:37 PVG 17:37 LAX 02:37 JFK 05:37
    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