V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
shenlei
V2EX  ›  C

怎么设计好一个类?

  •  
  •   shenlei · Oct 15, 2016 · 4017 views
    This topic created in 3481 days ago, the information mentioned may be changed or developed.

    小弟本科通信,研究生也是通信,给硬件写驱动,改驱动。工作找的是 C++的后台开发,可是我一直没从 C 语言面向过程转向 C++的面向对象编程上来,还请各位帮忙解释下怎么设计一个 C++的类。小弟不甚感激。

    Supplement 1  ·  Oct 15, 2016
    谢谢大家的回复,我总结下:
    1.先多写点 cpp 代码,找点感觉
    2.再原有代码的基础上多多重构。
    18 replies    2016-10-16 23:24:03 +08:00
    Em5O7B1JGfjQnBry
        1
    Em5O7B1JGfjQnBry  
       Oct 15, 2016 via Android
    看 C++ primer 的一些关于类设计的内容,然后试着写一个稍稍大一些的项目,就可以理解面向对象的好了。
    liuxu
        2
    liuxu  
       Oct 15, 2016
    学面向对象学一下 java 快速教程应该是最好的
    bossfrog
        3
    bossfrog  
       Oct 15, 2016 via Android
    一个设计良好类就是一个明确清晰的"黑盒子",使用者不需要知道太多的东西、甚至根据直觉就能把它用对。和语言无关
    anubiskong
        4
    anubiskong  
       Oct 15, 2016
    函数式编程, 解决你的烦恼, 手动斜眼
    lightzh
        5
    lightzh  
       Oct 15, 2016
    同意二楼的看法,之前还只学了 c/c++的时候,对面向对象比较难理解,后来做了一段时间 OC ,对面向对象才理解的好一点,现在再回来看 c++感觉清晰了一些。建议可以先看一下 java / OC 之类的。
    lsmgeb89
        6
    lsmgeb89  
       Oct 15, 2016
    没有觉得 C++ 的面向对象很难理解,概念都是差不多的,不用去看 Java 什么的

    C++ Primer Chapter 7 & 15
    Umix
        7
    Umix  
       Oct 15, 2016 via Android
    大话设计模式
    noli
        9
    noli  
       Oct 15, 2016 via iPhone
    c 和 c++长于解决的问题的尺度是不一样的。 c 面对硬件驱动这种问题是非常合适的工具。如果你想知道 c++中面向对象这一部分怎么用怎么写,你得先清楚它适合解决的问题的尺度。

    c++适用的场合一般是对性能要求非常高的大规模软件场景。什么叫做大规模,就是几十成百上千号人,为同一个软件项目生产代码,别拿 linux 内核来抬杠。这时候编程语言除了要承担产出机器码的终极作用,还必须承担一部分的人与人之间沟通的作用。

    c++中的面向对象,很多时候就是为了这种情况来使用的。换句话说,如果只是你的个人小工具,没必要因为 OO 而 OO ,怎么舒服怎么来。

    面向对象三大思想,继承,封装,多态,在 c++中都是为了更好地沟通而设计的。

    能接受这个思路再往下说。
    SuperMild
        10
    SuperMild  
       Oct 15, 2016
    lz 这个问题问得太大了,感觉还是先看书吧,基础的东西(包括类的思想和实现方法)书里都有写,然后遇到想不通的地方可以再来问,举出具体的例子。
    xsxsxszs
        11
    xsxsxszs  
       Oct 15, 2016 via iPhone
    建议先别看设计模式之类的,容易把自己绕进去,导致为了模式而模式。可以看好的开源代码模仿着来,设计模式这种应该是有一定项目经验之后再去看比较好。印象比较深刻的是硕士设计模式课程,有工作经验的同学听了觉得获益匪浅,说终于明白了以前工作里为什么要那么设计结构。而没工作经验的同学(比如我)基本一头雾水,觉得太理论了,听了两次课就没再去了。
    zhidian
        12
    zhidian  
       Oct 15, 2016
    同意楼上。先写(几)十万行代码再说。发现痛点了,再去重构。你就能设计一个好类了。

    刺激量不够,理论和方法,都是浮云。

    个人感觉,冲着架构师去,是成不了架构师的。首先你要是一个程序员。
    nozama
        13
    nozama  
       Oct 15, 2016
    我自己是这样工作的:抽象出问题的本质(思考...) -> 封装数据和行为 -> 对照 SOLID 原则反复重构 -> 设计模式浮现
    hyrious
        14
    hyrious  
       Oct 15, 2016 via Android
    先区分好 is_a 和 has_a
    zhuangzhuang1988
        15
    zhuangzhuang1988  
       Oct 15, 2016
    既然是 c++板块
    肯定是买本 c++老爹的书
    https://book.douban.com/subject/4604591/ 《 C++程序设计语言》
    然后看

    第四部分 用 C++ 做设计
    第 23 章 开发和设计
    23.1 概述
    。。。
    。。。
    beginor
        16
    beginor  
       Oct 15, 2016
    我觉得,对于单个类来说, 职责单一, 高内举, 能做到这两点就算是一个好的类。 至于体现松耦合则是多个类之间的关系了。
    q397064399
        17
    q397064399  
       Oct 16, 2016 via iPhone
    好吧 你需要敏捷软件开发
    HarveyDent
        18
    HarveyDent  
       Oct 16, 2016
    多写多踩坑,没有捷径的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4125 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 100ms · UTC 05:15 · PVG 13:15 · LAX 22:15 · JFK 01:15
    ♥ Do have faith in what you're doing.