作者PsMonkey (痞子军团团长)
看板java
标题Re: [问题] 请问trace code的技巧
时间Fri Mar 14 12:14:54 2014
※ 引述《topwing (Levin)》之铭言:
: 各位好
: 目前在trace一支java程式
: 因为没有java的基础,所以只好边看边学边爬文
请循其本,先找本书把基础知识还有名词定义弄好
你这样子的问题跟问法,爬文是爬不出困境的
我拿着一个 C 的程式问你:
「++i 我知道,但是这个 **i 为什麽出来的值不是我想要的」
你难道不会很无力吗?
: 但是trace程式流程的过程中遇到一个问题
: 就是在程式中有些成员可能会用到某父类别的方法
: 可是不知道是哪个成员去使用该父类别的方法
: 所以想说是否有function可以放在该父类别的方法里面
: 当有成员使用该父类别的方法又会自动印出是哪个成员使用的
: 以上是第一个问题
何谓「成员」?
中文没有翻译委员会之类的东西来统一名称
所以姑且用这两个 reference
*
http://openhome.cc/Gossip/JavaGossip-V1/ClassABC.htm
*
http://msdn.microsoft.com/zh-tw/library/cs1dtab3(v=vs.90).aspx
所以,大抵上中文翻译 OO 中的 member 似乎已经习惯用「成员」这个词
引用第一个 ref 的写法
在类别中的运算参与资料(Field)及互动方法(Method),
我们统称其为 类别成员(Class member)。
在这个定义下,你的问题会呈现一种无法理解的困境
如果你要问的是
public class Parent {
public void foo() {
System.out.println("who is your daddy?");
}
}
public class Child1 extends Parent {
public void wtf() {
super.foo();
}
}
public class Child2 extends Parent {
public void orz() {
super.foo();
}
}
在 new Child1().wtf(); new Child2().orz(); 之类的时候
可以印出 Child1 跟 Child2
那麽只要把 Parent.foo() 中改印
System.out.println(this.getClass().getName());
: 第二个问题是想请问一下在C中称function在java中是指"方法"吗??
: 因为爬文的教学网站都是称方法或Method,还是说function跟方法是不同的观念?
你要说一样,可以说一样
你要说不一样,那他们之间差的可大了
http://pt2club.blogspot.tw/search/label/OOP
: 最後一个问题是想问在trace code的流程是否有常用或特殊的技巧或是特别的软体?
基本认知是要用 IDE
帮你列 class hierarchy、跳 method declaration 等等都很有用
这部份刚好(可能)是 Java 乐胜其他语言的部份
有些人 trace code 是 debugger 派的
Eclipse 等级的 IDE 都有这功能
单步执行、暂停看变数等等功能都有
不过 debugger 的大前提是你的程式有办法实际 run
曾经接一个 code review 的 case
时程才开两个月,我估计建完执行环境就要花掉一个礼拜
而且说不定我的电脑还跑不动....... Zzzz
最重要的特殊技巧就是打好 Java 底子跟燃烧肝脏
(谜之声:你也好意思说「打好 Java 底子」)
: 因为在没有基础的情况下看得蛮吃力的,尤其是日以继夜的燃烧身体真的撑不住...
: 先感谢各位了
Let me know when your entire life goes up in smoke:
then it's time for a promotion.
-- The Devil Wears Prada
====
我日以继夜地上 ptt 发废文呢 [得意状]
--
钱锺书:
说出来的话
http://www.psmonkey.org
比不上不说出来的话
Java 版 cookcomic 版
只影射着说不出来的话
and more......
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.115.236.161
1F:推 summerleaves:正在打底中 禾斗禾斗 03/14 12:26
2F:→ PsMonkey:不要在洗底就好 [喂喂] 03/14 13:25