读书人

关于面向过程和面向对象的困扰 (回复

发布时间: 2012-02-24 16:30:39 作者: rapoo

关于面向过程和面向对象的困扰 (回复者都有分)
大家好,我是做游戏的,小弟读书不多,不懂说话,大家多见谅。

刚进公司不久,发现一个不爽的问题。公司不大程序员就我和另外一个(据说是程序组长),就只管我一个 -_-闷。他是做C出身的,我想。看了他的代码...“一版过”,可以不夸张地说一个.cpp 里面可以写 2-4K 行代码。看晕了,逻辑全用Switch..Case... if...else...搞定,一个游戏下来,也就不过3-5个类。一个小小的单机游戏,听他说有10W行。汗! 并不是说类少就不好。可我在想,如果逻辑要求很复杂的时候,他的Case要排到哪去呢?对于我来说,一向追求架构,简单,还有更好的扩展性和可读性的程序。

刚进公司不久,想说点什么。。。可一个新人又能说什么呢?主要是编程序风格的不同,搞得我很闷,不知如何是好。我也是从C过来C++的,他写的东西我能看懂(太长需要点时间)。可以后都要我像他那样写游戏的话,能有发展吗?能写出什么好东西?(或许是我一个新人不懂请多指教)。我觉得写游戏C++面向对象是要比“一版过”可以写出更复杂的更好的东西来。最近在研究《设计模式》,也用了其中的几个到游戏中。发现C++面向对象真的很强大,我想还要继续深入研究。做出更好的程序来。(架构,简单,扩展性,可读性,性能)这些都是我的追求。但和组长写下去,会有结果吗?

现在的问题是:我刚进公一个月,我该做些什么?我能做些什么?怎么去面对呢?
我这样的心态对吗?刚入行没多久。。。不敢妄言。大家指教!谢谢了!

[解决办法]
和领导交流下呗,谦虚点
[解决办法]
我对新人的意见:
多看,多听,多干,少说.
你的领导好坏还能写程序(多少也能让你学到点东西),碰到一个外行的领导,你不更郁闷?
当然,自己好的特长还是要保持,只是要沉住气,是金子总是会发光的.
一点个人见解,还望楼主见谅.


[解决办法]
该坚持的就坚持,金子总会发光的,但要注意和领导的关系
[解决办法]
你自己写的时候要注意,文件要清晰,类设计什么的,不要像那个人那样写,当然功能要实现。你们现在代码写成这个样子以后维护性很差的,当然那个人主要关注了算法逻辑了。你就当学习经验,以后干时间长了,换一个公司吧。
[解决办法]
回复者有分

我也觉得维护性差

还是C++的维护性好 把很多函数再装在类里 抽象层次比较高
如果是C语言,几千个函数,几万个函数,晕
而C++把上千个函数装在几十个类里 出问题时,就从几十个类中查询
[解决办法]
这个问题很纠结啊!!!
[解决办法]
其实C++的封装层次也不高,你说他写个小游戏10万行,那你认为“高级的”C++要多少行呢?使用STL、Boost等库最多减少点数据结构的代码,游戏逻辑不还得自己写?另外还要承受性能的代价。

面向对象并不一定就比面向过程高级,面向过程、面向对象以及函数式编程都是平级的。

别光看他用的“思想”,一个cpp文件4K行其实不为过,注意下他的代码细节,算法、内存操作、文件读写、编码风格等等等等,判定一个人的水平靠的是这些,而不是什么“思想”。

一个初学java的(之前什么都没学过,一上来就接触纯粹的面向对象)和一个优秀的C程序员,可能前者的代码更具面向对象的“思想”,但不能说前者水平高。
[解决办法]
有的人认为面向对象的代码中的局部是面向过程的,作为两者的区别和联系。
有的人认为一切只要到更低的表现层次都是一样的。
有的人言必称继承封装多态。
有的人言必称srp,ocp,lsp,dip,isp。
有的人言必称面向接口,优先用组合而不是继承。

我感觉吧,都是一种解决问题的模式。
面向过程的话,更多需要流程逻辑,数据逻辑。
面向对象的话,更多地去分析其中的实体及其联系,如何恰当定义接口,如何使系统更加灵活。

在很多书上都会指出软件危机和OO,可以看出来,这是解决问题的模式。
既然都是用来解决问题的,何必困扰呢?
[解决办法]
学习了。给顶。
好贴。留名。
[解决办法]
类多,对于熟悉代码的人来说,维护很轻松;但新人阅读可能会吃力一点
类少,有点偏向c语言开发的倾向,逻辑简单,顺着思维跑到底,但不利于维护
[解决办法]
不错
虚心请教

探讨
引用:
我对新人的意见:
多看,多听,多干,少说.
你的领导好坏还能写程序(多少也能让你学到点东西),碰到一个外行的领导,你不更郁闷?
当然,自己好的特长还是要保持,只是要沉住气,是金子总是会发光的.
一点个人见解,还望楼主见谅.

忠肯。。。谢谢啦!

[解决办法]
楼主,保持你自己的风格。

不必困扰。
[解决办法]
探讨
有的人认为面向对象的代码中的局部是面向过程的,作为两者的区别和联系。
有的人认为一切只要到更低的表现层次都是一样的。
有的人言必称继承封装多态。
有的人言必称srp,ocp,lsp,dip,isp。
有的人言必称面向接口,优先用组合而不是继承。

我感觉吧,都是一种解决问题的模式。
面向过程的话,更多需要流程逻辑,数据逻辑。
面向对象的话,更多地去分析其中的实体及其联系,如何恰当定……

[解决办法]
推荐阅读《冒号课堂-编程范式与OOP思想》

------解决方案--------------------


我感觉如果你想在这个公司并且你这份工作来之不易,那么你就去学会适应这个环境,也许不是很坏的结果呢,说不定一年两年后你就成为项目经理了呢,所以说,任何事情都要学会适应,这样你就会变得更强。相信你会做的更好。
[解决办法]
我也是做游戏的
如果刚工作不久,还是学习为主
公司比较小的话,你可能什么都要做一些了
我们也不好回答你怎样做比较好
原则就是,1,保持学习,2做公司最需要的事,

让你感觉不好的代码,到处都会有的,这时候,淡定,不要影响同事关系

学习的话,你还是边做边学,因为,你已经在工作了,没法有足够的时间,来系统的学习一样东西
只是做到一个不懂的东西的时候,记下来,有空的时候,深入研究一下

[解决办法]
关于面向对象和面向过程
关键是思想,
我有见过一个游戏设计师,是早期的程序员,他写的C代码,很“面向对象”
你业余的时候,保持看书,设计模式,面向对象,都要看
初期的时候,最好不要用到项目上去
因为,这时候,你本身不够熟练,会事得其反
自己可以先做一些小实验
目前,通用的设计模式,有23个,但是,模式其实是无限的
你可以充分发挥自己的创造力,修改某些模式,或者自创一些模式,要大胆的想
[解决办法]
你进个公司,肯定是你要融入人家公司的环境当中,而不是让公司来适应你,所以说那句话很对,多听,多学,多干,少说话是正解,呵呵,个人意见,希望lz别见怪。
[解决办法]
多看多听,学习人家的好处,自己要谦虚,适当的表达一下自己的想法。坚持自己认为对的,不行的话,就跳槽吧!

读书人网 >C++

热点推荐