首页 > 其他 > 详细

面向对象编程

时间:2017-02-16 13:22:11      阅读:197      评论:0      收藏:0      [点我收藏+]
对于高级编程语言(区别于C和汇编),动不动就有人说面向对象编程,OOP各种封装,继承,多态就出来。
但是实际开发中我们还是写的一个个方法一个个函数,还是顺序,分支,循环的面向过程的代码开发,面向对象编程与我们有何意义?
开发久了就让我们忘记了当初完成一个“hello,world!”的兴奋和喜悦。
或许你会说开发中大量的复制和粘贴消磨了我们对编程的热情,变成了机械的劳动和无尽的BUG修复。
但是编程不只是复制和粘贴,还有框架和架构。
复杂的业务逻辑逼得我们写出了1000+行的方法函数体,每个类打开拉倒底部都能让滚动条滚动好久,再开发时读自己的代码都想回去砍自己好几回,如果手贱不小心删掉一个花括号,把它补回去也能找上好久,
相同的代码在不同的函数中被各种复制粘贴,当下次修改时它就会变成无尽的噩梦。这时或许你还会想起当初老师讲过的将重复的代码抽离成函数使用,一个类最好不要超过2屏,一个函数最好保留在一屏内,
或许你还会想起封装,继承,多态来,面向对象不只是考试,认证,面试时才出现的名词,或许此时你才真的迈向了中级,高级程序员的行列。
抽离公用代码封装成函数或者类再命名上一个简洁清晰的名字是不是很完美,不过就只是这样么?   java中一般建议一个方法不要写的过长,不方便维护和阅读是其中的一个原因,但是其真正性能的原因大家知道吗?
我们知道,JVM一开始是以解释方式执行字节码的。当这段代码被执行的次数足够多以后,它会被动态优化并编译成机器码执行,执行速度会大大加快,这就是所谓的JIT编译。

hotsopt源码中有一句

if (DontCompileHugeMethods && m->code_size() > HugeMethodLimit) return false;  
        当DontCompileHugeMethods=true且代码长度大于HugeMethodLimit时,方法不会被编译。

        DontCompileHugeMethods与HugeMethodLimit的值在globals.hpp中定义:

    product(bool, DontCompileHugeMethods, true,  
            "don‘t compile methods > HugeMethodLimit")  
    develop(intx, HugeMethodLimit,  8000,  
            "don‘t compile methods larger than this if +DontCompileHugeMethods")  
         上面两个参数说明了Hotspot对字节码超过8000字节的大方法有JIT编译限制,这就是大方法不会被JIT编译的原因。由于使用的是product mode的JRE,我们只能尝试关闭DontCompileHugeMethods,即增加VM参 数”-XX:-DontCompileHugeMethods”来强迫JVM编译大方法。但是不建议这么做,因为一旦Code Cache满了,HotSpot会停止所有后续的编译任务,虽然已编译的代码不受影响,但是后面的所有方法都会强制停留在纯解释模式。
不明觉厉,反正只要记得别写太长的方法就可以,短方法更利于执行速度优化。
封装好的类可以被后续的类继承,生成的子类可以调用父类中的方法和变量( private,protected和public关键字不在讲解),此时也可以重写父类中的方法,这样我们就省去了复制粘贴之累了,基于参数不同的函数多态也略过不再详述。
编程这些年,想想不容易,希望大家能在走得更轻松些吧~

面向对象编程

原文:http://www.cnblogs.com/buywine/p/6404900.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!