`
王者之剑
  • 浏览: 196409 次
  • 性别: Icon_minigender_1
  • 来自: 湖北
社区版块
存档分类
最新评论

如何看源代码?给非科班出身的新手

阅读更多

 

经常看到这样的问题:

http://www.iteye.com/topic/577217

 

教教你怎么看源代码吧
1.这是什么项目的源代码?
(再没有文档这个总是有的吧?哪怕是个代号)
2.这个项目的性质
 (B/S还是C/S,用的什么编程语言,用的行业细分,规模)
3.源代码的规模
  有多少行(其中有多少行是注释),总共有多少个文件(每一类文件分别有多少个,每个文件是多少行)
  如果是面向对象的,有多少个class,如果是面向过程的有多少个function
4.功能的详细整理
  功能列表
  函数名   功能   功能描述
  (没有注释不要紧,函数名总是有的吧,功能你认为是什么就填什么)
5.功能模块之间的关系
  (哪怕没有注释,按名称,调用关系一定能整理清楚)
如果你把我上面列的5点搞清楚了,再来抱怨,我想应该是下面这个样子:
老大给了我一个项目源码让我看,注释都没有,是一个超级留言本,总共有10万行代码,就两个文件,函数不到10个,功能就是注册和留言,连修改删除功能都没有,大家说我看这样的代码有意思吗?我是不是还要待在这里?

 

如果你完成了我上面说的5步,你仍然觉得没什么值得学的,没有什么需要做的,说明你不适合干编程这一行。

 

分享到:
评论
27 楼 zcy860511 2010-02-04  
俺就看了点java src。。。。飘过
26 楼 huangtian549 2010-02-04  
每次哥遇到装Β的人,哥总是默默的低下头,不是哥修养好,是哥在找砖头~~~
25 楼 xo_tobacoo 2010-02-04  
这明显瞎说
24 楼 gogole_09 2010-02-04  
王者之剑 写道
gogole_09 写道
这个还真说不准,每个人学习方法都不一样。  而且楼主给"非科班出身的新手"的这个标题确实过分,难道科班出身的新手就会阅读源代码了? 

  楼主有歧视的嫌疑哦......

难道科班出身的不会阅读源代码?

难道非科班出身的不会阅读源代码?
23 楼 dtzleg 2010-02-03  
4.功能的详细整理
  功能列表
  函数名   功能   功能描述
  (没有注释不要紧,函数名总是有的吧,功能你认为是什么就填什么)
5.功能模块之间的关系
  (哪怕没有注释,按名称,调用关系一定能整理清楚)

这两个,会很混乱
N多同样功能的函数代码以不同的复杂度和交叉调用,这个是造成4,5效率低下的主要原因。。。
22 楼 王者之剑 2010-02-02  
gogole_09 写道
这个还真说不准,每个人学习方法都不一样。  而且楼主给"非科班出身的新手"的这个标题确实过分,难道科班出身的新手就会阅读源代码了? 

  楼主有歧视的嫌疑哦......

难道科班出身的不会阅读源代码?
21 楼 gogole_09 2010-01-30  
<p>这个还真说不准,每个人学习方法都不一样。  而且楼主给"非科班出身的新手"的这个标题确实过分,难道科班出身的新手就会阅读源代码了?  </p>
<p>  楼主有歧视的嫌疑哦...... </p>
20 楼 madbluesky 2010-01-30  
lz直接上一个范例吧...看看lz怎样读源代码的,看看管用不管用.比如上一个你读过的开源的xx软件的读源码心得
19 楼 王者之剑 2010-01-29  
阳光晒晒 写道
shuxiang 写道
想请教一下楼主,如果是一个新人,想看一个他不知道实现原理的项目源码(也就是说哪个类实现什么功能他根本就不知道)该怎么办呢?

那就需要知道
为什么而看

一般新手不建议看源码
看api更合适一些

我的建议:
迅速掌握API完成任务,腾出时间来看源代码。
18 楼 王者之剑 2010-01-29  
shuxiang 写道
想请教一下楼主,如果是一个新人,想看一个他不知道实现原理的项目源码(也就是说哪个类实现什么功能他根本就不知道)该怎么办呢?

其实主贴里已经说了,可能不好理解。

不知你知不知道“代码混淆”的概念,你就当成混淆后的代码来看就行了。

如果这个代码能够运行,你可以先让它运行起来,这样直观一些。
如果不能运行,我相信源码一定会在某种程度上告诉你这个源码是做什么的,哪怕没有任何文档和注释,相信我,一定比混淆后的代码容易看懂。

你肯定学过代数,用a,b,c x,y,z来表示某个意思,这里不过是代码。

还有,这些源码调用的最基本的API都是有文档的。
例如不知道a是做什么的,但知道a调用了b,b调用了写文件的api,
你可以暂时这样理解,a做的某一件事就是调用b写文件。

等你对这些a,b,c之间的关系了解得越来越多之后,实现原理也就基本清楚了。

也有可能代码用了一个比较复杂的算法,并没有在旁边写上这个算法的名字(如果有名字,肯定是一个很大的帮助),碰巧这个算法你没有用过,这时你可以把这段程序的步骤用文字描述出来。
17 楼 王者之剑 2010-01-29  
yongdi2 写道
如果看比如Linux内核,PHP源码这样的牛人写的规范代码,看不懂那是水平问题,也不得不佩服人家。但是用在一般公司内部交接的代码通常比较痛苦,特别是转手无数次的烂码,谁摊上谁倒霉,自己担责任

不知你看过你仰幕的牛人写的代码没有?

看到烂码,你的想法决定了一切,真他妈烂,是哪个SB写的?
我也是这样想的,
但我不想紧接着把自己加在SB列表的后面,哪怕这个列表是匿名的。

有的人可能要说改出问题来了怎么办?
胆大心细,遇事不慌。这句样板戏里的台词,与诸位共勉。
16 楼 王者之剑 2010-01-29  
showr 写道
按照你的方法就能学到东西 ?

学不到东西就不适合编程 ?

大哥您不觉得有点不妥么 ·?

我觉得很妥,编程就是编程,你如果觉得编程学不到东西难道还不能说你不适合编程?
15 楼 王者之剑 2010-01-29  
jackhorner 写道
引用

如果你完成了我上面说的5步,你仍然觉得没什么值得学的,没有什么需要做的,说明你不适合干编程这一行。

知道怎么读代码(也许是错误的)也能给你这么强的优越感,服了。 orz

给看不出来我是在显示优越感的人看的,浪费你时间了。
14 楼 王者之剑 2010-01-29  
amcucn 写道
难道楼主对每个自己参与开发的项目的源代码都仔细读过?

1.自己要用到的肯定是要读
2.有时间的话能看到的都看
3.还没有碰到没时间的时候
13 楼 王者之剑 2010-01-29  
geweixin 写道
每次哥遇到装Β的人,哥总是默默的低下头,不是哥修养好,是哥在找砖头~~~

呵呵
12 楼 王者之剑 2010-01-29  
eshan022 写道
懂编程的人都知道怎么看,不懂编程的人给他看也看不懂,没意义

意义在于不懂编程的人最大的问题就是“怕”,按我说的,埋头去做,不要怕,等你做完了就知道有意义了。

11 楼 阳光晒晒 2010-01-29  
shuxiang 写道
想请教一下楼主,如果是一个新人,想看一个他不知道实现原理的项目源码(也就是说哪个类实现什么功能他根本就不知道)该怎么办呢?

那就需要知道
为什么而看

一般新手不建议看源码
看api更合适一些
10 楼 shuxiang 2010-01-29  
想请教一下楼主,如果是一个新人,想看一个他不知道实现原理的项目源码(也就是说哪个类实现什么功能他根本就不知道)该怎么办呢?
9 楼 yangsheng 2010-01-29  
geweixin 写道
每次哥遇到装Β的人,哥总是默默的低下头,不是哥修养好,是哥在找砖头~~~


8 楼 yongdi2 2010-01-28  
如果看比如Linux内核,PHP源码这样的牛人写的规范代码,看不懂那是水平问题,也不得不佩服人家。但是用在一般公司内部交接的代码通常比较痛苦,特别是转手无数次的烂码,谁摊上谁倒霉,自己担责任

相关推荐

    看看一个非科班出身的人对于产品设计的理解

    StephanieEngle,大学读的是公共政策专业却在Facebook做产品设计,看看一个非科班出身的人对于产品设计的理解。内含一个CASESTUDY:)产品设计到底是什么?为啥那么重要?怎么来设计一个产品?人人都能成为产品设计师...

    非科班出身程序员刷题-proposal:提议

    非科班出身程序员刷题开放计算教育 使最佳实践成为普遍实践 埃文科尔 顾问:Benoît Vanderose & Bruno Dumas 2020 年 3 月 29 日 内容 研究报告 已经为新手程序员开发了许多很棒的资源、课程、工具和学习环境。 ...

    非科班出身程序员刷题-mysql:mysql笔记

    非科班出身程序员刷题 /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysqld --skip-grant-tables -- 修改root密码 密码加密函数...

    不是科班出身,怎么进入泛心理赛道?_高客单价产品打造&变现指南.pdf

    不是科班出身,怎么进入泛心理赛道?_高客单价产品打造&变现指南

    非科班出身程序员刷题-Evelyn:伊芙琳

    非科班出身程序员刷题 Evelyn 答:主要包括三大块,教育软件开发公司,公司就包括投资人,开发团队。第二个 市场 经销商 产品发布平台(APP store, 安卓 是教育软件的直接承载体 现在现有的使用手机软件的最直接的...

    非科班出身程序员刷题-resources:资源

    非科班出身程序员刷题 课程辅导计划表(持续更新ing) [TOC] 1 课程目标 为了很好地衔接下学期课程,以278为主体,学习基础通用知识(274算法基础也有必要回顾)。我的计划是先把278上完,再回顾274.起码主体部分要...

    非科班出身程序员刷题-Entrepreneurship:创业精神

    非科班出身程序员刷题 Entrepreneurship 我的邮箱是 My mailbox is 微信是facial58 2018年赚钱好项目:鹊桥 婚姻介绍所需选在交通出入比较方便的地方,同时,还要有一套比较完整的资料库,征婚者的资料包括基本情况...

    非科班出身程序员刷题-mx::milky_way:冥想练习

    非科班出身程序员刷题 mx(冥想) 冥想联系 国内访问 国外访问 音频来自网络 网站模板来自 一说程序员的工作方式,下面这个网流图最直观: 别笑,真实生活中的程序员确实很多都是这样的。我们来逐一分析一下做程序员这...

    非科班出身程序员刷题-FAQ:常问问题

    非科班出身程序员刷题 通用问题 清缓存方法 目前系统使用正常,请清理缓存后再重新登录一下,还有问题截图反馈具体情况。 说明:当系统正常,个人使用不正常时,可以采用清理缓存、重启浏览器等方法解决 电脑端清理...

    非科班出身程序员刷题--:——

    非科班出身程序员刷题 瑞典生活 **注:**我跟大家一样,正在准备瑞典之行。这些对瑞典生活的描述,多都是看来问来的,仅为参考,不尽客观,还望理解。不正确的信息,望各位及时发现指正和补充,谢谢! 希望大家都有...

    非科班出身程序员刷题-english-study:英语学习

    非科班出身程序员刷题 english-study 公式: e: (状1) 主(定1) 谓(状2) 宾(定2\状1) z: (状1\定1) 主(状2) 谓(定2) 宾(状1) 2019-01-01 公式的简单造型 1.A small bee from China is threatening the ...

    非科班出身程序员刷题-py1:英语学习

    非科班出身程序员刷题 py1 definitive 最后的; 决定性的; 不可更改的; 最佳的; 最完整可靠的 repository 仓库; 贮藏室; 存放处; 学识渊博的人; 智囊; 知识宝典; branch 树枝; 分支; 分部; 分行; 分店; 政府部门; ...

    非科班出身程序员刷题-MyNaivePoem:我的天真诗

    非科班出身程序员刷题 MyNaivePoem 记录曾经的幼稚作品,大多为初高中时代所做。 目录 夏令营游清华 一舍情缘,两两作伴,三伏天下,四处寻车,五里徘徊,六神无主,七律长征,八方支援,九转回肠,十拿九稳,百年...

    非科班出身程序员刷题-AI-uniapp:AI-uniapp

    非科班出身程序员刷题 10.15 日报 1. 修复 绑定邮箱样式+提取全局邮箱后缀 2. 修复 登录选项title+学情报告样式 10.14 日报 1. 新增 绑定邮箱输入提示 2. 修复 老师首页学情报告多班级样式错误 3. 新增 班级增加移除...

    非科班出身程序员刷题-3d-printing:桌面3D打印机

    非科班出身程序员刷题 桌面3D打印机 专注于桌面3D打印机和3D打印技术的观察、研究和思考。 中英对照 3D打印 3D Printing 桌面3D打印机 Desktop 3D Printer 3D扫描 熔融沉积成型 FDM 专利问题 :3D打印技术专利激光...

    非科班出身程序员刷题-go-acwing:acwing.com解决方案

    非科班出身程序员刷题 go-acwing acwing.com solutions in golang # 题目 题解 通过率 难度 0001 A+B 64.23% 简单 0002 01背包问题 59.17% 简单 0003 完全背包问题 57.46% 简单 0004 多重背包问题I 56.08% 简单 0005...

    非科班出身程序员刷题-nanny:运行命令,像MaryPoppins一样观察它

    非科班出身程序员刷题保姆(回购) 该存储库包含用于在 linux 机器上运行后台(批处理)进程的工具,监视它们并在它们未成功终止时尝试尽可能多地了解它们。 目前的主要工具是childminder ,有nanny ,因为它的依赖...

    非科班出身程序员刷题-shareKaoYan:分享我在研究生考试中的一些经验

    非科班出身程序员刷题 考研的经验分享 韦相铭 学长 经验分享: 链接: 考研视频去B站: 查专业和学校: 研招网: 查看专业排名: 看是A+,A。B+,B,B-等等 了解复习方法: 知乎: 了解大致的学校排名: 一、如何选...

    非科班出身程序员刷题-IoTServer-Front:B/S软件设计课程项目

    非科班出身程序员刷题 IoTServer: 物联网应用管理网站 课程名称:B/S 体系软件设计 姓名:徐震 学院:竺可桢学院 专业:混合班(计算机科学与技术) 学号:3180105504 指导老师:胡晓军 项目地址: 前端: 后端: ...

Global site tag (gtag.js) - Google Analytics