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

新手程序员,如何提高面向对象编程能力?

  •  
  •   Riverrun · 2019-01-31 22:32:19 +08:00 · 6183 次点击
    这是一个创建于 2123 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚入职不久,但是部门产品已相对成熟,平时的工作多是看代码、修 bug,做需求也不会对原有代码结构做太大的变动;觉得如果真的要自己动手写这样一个产品会非常吃力。

    请问平时自己学习时该如何提高面向对象编程的能力?

    41 条回复    2019-02-01 16:51:14 +08:00
    hv3s1
        1
    hv3s1  
       2019-01-31 22:38:34 +08:00
    ...现在什么框架不是面对对象。

    除了 C。其他基本上都是面对对象。

    提高编程能力,疯狂 CODE 吧。
    Riverrun
        2
    Riverrun  
    OP
       2019-01-31 22:41:54 +08:00
    @hv3s1 因为就是写 C 的……痛哭
    junjieyuanxiling
        3
    junjieyuanxiling  
       2019-01-31 22:45:32 +08:00
    那就 gtk。
    chenqh
        4
    chenqh  
       2019-01-31 22:56:22 +08:00
    @Riverrun C 也有 C 的好处呀,性能高。。万物基于 C,逃
    di94sh
        5
    di94sh  
       2019-01-31 22:59:55 +08:00 via Android
    可以了解 go 的面向对象。c 也能写出来
    Riverrun
        6
    Riverrun  
    OP
       2019-01-31 23:55:38 +08:00
    @chenqh 最近开始接触 java 感觉来到了没有技能的荒原 orz
    Riverrun
        7
    Riverrun  
    OP
       2019-01-31 23:55:54 +08:00
    @di94sh 感谢,去了解一下
    anyele
        8
    anyele  
       2019-02-01 00:12:10 +08:00 via Android
    说下我对楼主问题的理解,其实我觉得楼主想表达继承封装多态在实际代码里的应用? 还有各种设计模式怎么应用到业务代码里对吗?
    q8164305
        9
    q8164305  
       2019-02-01 00:21:25 +08:00 via Android
    先写出来,再考虑写好
    q8164305
        10
    q8164305  
       2019-02-01 00:23:58 +08:00 via Android
    其实不用面向对象照样能写代码的,就是不好维护而已,等你触到痛点,自然就会了,我刚开始写的时候也是看不懂面向对象干嘛用的,不用面向对象照样写代码,但是后期迭代的时候触到痛点自然就会了
    danc
        11
    danc  
       2019-02-01 00:29:41 +08:00 via Android
    那就找个对象呗。去 TM 的面向对象,C 语言那种方式不是挺好的么
    GeruzoniAnsasu
        12
    GeruzoniAnsasu  
       2019-02-01 00:29:47 +08:00
    个人经验,写点 MFC 的小东西

    不用什么大项目,随便什么对话框小工具就足够了

    以前学编程的时候,c++看完类一脸懵逼一点概念都没,然后稍微学了学 MFC 突然开窍了,MFC 是纯 C++(C with class)搭起来的框架,没有任何扩展语法和机制,最多有点点宏,对学习 OO 编程很有帮助( c++语言限定)
    Baymaxbowen
        13
    Baymaxbowen  
       2019-02-01 01:11:38 +08:00 via Android
    当我发现自己以前写的代码和一坨屎一样的时候
    Andiry
        14
    Andiry  
       2019-02-01 01:47:27 +08:00   ❤️ 1
    C 也能面向对象,看看 Linux kernel 里 VFS 的接口就懂了
    RqPS6rhmP3Nyn3Tm
        15
    RqPS6rhmP3Nyn3Tm  
       2019-02-01 01:58:17 +08:00 via iPhone   ❤️ 1
    现代的 c 也用了不少面向对象的模式
    Design pattern 还是要看看
    ma9806
        16
    ma9806  
       2019-02-01 02:01:18 +08:00 via Android   ❤️ 1
    找一个对象
    lifeintools
        17
    lifeintools  
       2019-02-01 05:56:07 +08:00
    先写出来 写够 10W+
    ericgui
        18
    ericgui  
       2019-02-01 06:09:58 +08:00
    你自己写个 MVC 框架,不管多丑,不管多垃圾,能跑起来,自己用它写个博客
    zhangroyaso
        19
    zhangroyaso  
       2019-02-01 08:06:00 +08:00
    我一直。卡在这。
    mfc 是 win 的吗?没有 win 的我怎么办
    其实 lz 应该想要的和我一样,一条学习的道路能弄懂面相对象,不管是哪本书还是某个博客系列
    Kaiv2
        20
    Kaiv2  
       2019-02-01 08:09:22 +08:00 via Android
    试试一个完成一个项目
    shylockhg
        21
    shylockhg  
       2019-02-01 09:09:48 +08:00   ❤️ 1
    用 c 实现面向对象思想呗,
    不要 c++/java/python 这些原生实现影响了,
    关注面向对象的三大原则,自己用 c 模拟。
    比如 Linux 内核的 container_of。
    chiu
        22
    chiu  
       2019-02-01 09:11:29 +08:00
    C 也可以写面向对象的 C
    SorcererXW
        23
    SorcererXW  
       2019-02-01 09:13:38 +08:00
    学一下设计模式
    zhwithsweet
        24
    zhwithsweet  
       2019-02-01 09:16:15 +08:00 via iPhone
    来吧,haskell。Fb 好玩一万倍(滑稽
    frylkrttj
        25
    frylkrttj  
       2019-02-01 09:19:43 +08:00
    @Andiry @chiu 有没有 C 面向对象的书或者教程我想看看
    frankyxu
        26
    frankyxu  
       2019-02-01 09:58:41 +08:00   ❤️ 1
    首先,你得有个对象
    guanhui07
        27
    guanhui07  
       2019-02-01 10:03:28 +08:00
    看看设计模式,把各种语法用熟悉 应用到写各种封装类库
    no1xsyzy
        28
    no1xsyzy  
       2019-02-01 10:30:56 +08:00
    C 的话不妨稍微看看 CPython 的源码?
    或者是哪个地方解释为什么 Python 方法需要 self —— 为了弄得像是 C OOP 一样。
    StubbornC
        29
    StubbornC  
       2019-02-01 10:39:49 +08:00
    没点进来之前还以为是找女朋友经验贴,失望啊阿仔(狗头
    wingpui
        30
    wingpui  
       2019-02-01 10:44:09 +08:00
    楼上大大们都说得很对啦,经验到了,自然会升级的,技能都可以领悟的
    OMan
        31
    OMan  
       2019-02-01 10:45:21 +08:00
    首先,你要有个 对象。之后才能真正的实现,面向 对象 编程。
    hievan
        32
    hievan  
       2019-02-01 11:04:06 +08:00
    先找个“对象”吧.
    zhazi
        33
    zhazi  
       2019-02-01 11:23:41 +08:00 via Android
    不知道楼上一群人在说啥
    你可以尝试用编程语言写个小短篇故事
    比如
    “一个人在逛超市”
    如何形容这个人,这个人在超市里能干什么,这个人本身能干什么,超市如何形容
    用汉语描述一遍,用编程语言表述一下你的汉语描述
    如果程序读起来没有歧义我觉得你就知道什么是面相对象了,
    如果把这句话转换成公司的商业业务你也应该能找到业务中的 “人”和“超市”
    wei375653972
        34
    wei375653972  
       2019-02-01 11:28:48 +08:00
    首先得找个对象,才能面向对象 你说是吧
    libook
        35
    libook  
       2019-02-01 11:46:07 +08:00
    理论都了解的话,还是的练,自己做点小项目啥的,比如做些工具库,尝试使用面向对象的思想来设计。

    不过面向对象不能一招走天下,其他的变成思想最好也看看,项目上灵活使用。
    qwingmix
        36
    qwingmix  
       2019-02-01 15:11:08 +08:00
    当你有的一个项目不停地增长的时候,必然遇到 OOP 来解决重复代码的问题。 不然你要改动的个东西, 就要是 N 个重复代码的地方改动,效率会非常低。 这是最基本款的面向对象的好处。
    tiedan
        37
    tiedan  
       2019-02-01 16:17:47 +08:00
    找个对象
    ByZHkc3
        38
    ByZHkc3  
       2019-02-01 16:27:42 +08:00
    new Object();
    Object.create();
    const MyGirl = {name:'Anna'};
    const MyGirl = function(name){
    return {

    }

    }
    kakudesu
        39
    kakudesu  
       2019-02-01 16:38:07 +08:00
    分三步把大象装进冰箱
    xxgirl2
        40
    xxgirl2  
       2019-02-01 16:44:45 +08:00
    zeroDev
        41
    zeroDev  
       2019-02-01 16:51:14 +08:00 via Android
    自我感觉就是写,然后看文档怎么写
    日常写 Python
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3051 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:50 · PVG 21:50 · LAX 05:50 · JFK 08:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.