一位同事因为设计的几个类搞了几十个public的成员,被经理指责得一无是处,大家评评理!(0分)

X

xingkong97

Unregistered / Unconfirmed
GUEST, unregistred user!
to all:
我们现在就在开发一个大型的项目。我们开发人员有6个人。
我觉得在一个项目中,不是每一个人的水平都一样,肯定有高有低,高的确实要更多的担负起规划项目、项目质量监督的责任。不过,对一个女孩子大声指责,我是肯定做不到的。
说一下我们在这方面的设计:
我们肯定会用property的方法去存取私有数据,我觉得这是最明显也是最高效的方法。
但是我们不会这样用:
private
FName: string;
public
property Name: string read FName write FName;
因为这样用,别人在继承这个类的时候是没法去改写Name的赋值和获取语句的。
我们会这样写:
protected
function GetName;
procedure SetName(value:...);
private
property Name: string read GetName write SetName;
我认为这样写就很好的解决了继承与属性使用方面的问题。
不知道楼上的各位,讨论的结果是不是这样呢。
 
L

linuxping

Unregistered / Unconfirmed
GUEST, unregistred user!
把类拿来看看就知道嘛[:D][:D][:D]
 
L

linuxping

Unregistered / Unconfirmed
GUEST, unregistred user!
来自:郭玉梁, 时间:2008-6-21 15:46:10, ID:3903170
我就搞不懂了
public和property有必然联系吗?
简单评价一下,女孩最多就是程序上经验不足,那个所谓的经理,就是人品问题了

top
 
M

maphc

Unregistered / Unconfirmed
GUEST, unregistred user!
有错误肯定是有的,人需要互相体谅 互相尊重。不要因为你位置高,而鄙视人,压迫人
 

网事如风

Unregistered / Unconfirmed
GUEST, unregistred user!
老人冒泡不少啊,我也来几句。。。。。。。。。
针对经理职责的:
一:项目开发,尤其是团队开发,都要有规矩,其实如上问题,我认为可以归结为代码规范,估计代码规范里没有制定,那么程序员犯了,只能说明是代码习惯不好,需要增加到代码规约。。。。后续开发人员遵循
二:经理如是说:“你居然会这么说,属性是干什么的?不会看看人家 Borland 的源代码?随便找本面向对象的书,前 50 页就会有人告诉你如何封装、如何不直接暴露成员,搞了 1 年半的 Delphi,我觉得你就是一个幼儿园的水平...”
说明还是有些想法或者肚里有货的人,那么如何把你的想法告诉团队人员呢?须知,团队开发中,项目经理其实有两个职责,其一:很好的完成项目;其二:提高团队成员的能力。。。。。。一年半时间了,团队成员的水平没什么提高,该经理有没有责任呢?
三:做技术的,其实头脑是最简单的,方世玉老丈人以德服人,技术人才则需要以技服人,打压只会适得其方,比如这个时候,经理可以很客气的告诉开发者,这里的代码存在什么问题,存在的问题会带来什么代码的臭味道,如何修改,这样修改会带来什么好处;或者你很忙,那么你可以只告诉他如何修改,让他自己体会,他明白了这个道理,自然会陪你去西天取经(:
四:项目经理是项目的带头人,项目经理的情绪会直接影响团队成员的情绪,直接导致的后果就是项目滞后或者延期,如果成员确实做的很糟糕,那么你可以单独对他进行说服和教育,我想效果会好很多。。。。开发这么多年了,我没遇到如此的头,如果遇到了,我想我的直接反应:就是卷铺盖走人。。。。。。
五:项目经理应该追求的是结果,而不是过程,很显然这里项目经理追求了过程。追求过程应该是在平时,也主要是提高人员素质,规范团队开发,如果做到了,自然过程水到渠成,而不是在团队开发中。如果开发团队很大的话,专门有做代码Review的人员,专门有做测试的人。你抓了芝麻,西瓜还能吃到吗?
------------------------------------------
针对开发者的:
没想到多少。。。。。。。。
只能说努力提高自身素质了,一年多时间如果把成员大量public,也确实那个了点
 

网事如风

Unregistered / Unconfirmed
GUEST, unregistred user!
代码:
再说几句,这个问题是很典型的面向对象中封装的实现:
Delphi,C#,Java这三种语言中,Delphi的实现是最笨拙的,也是最难理解的,
我的认识,当然每个人看法不同了(:
Delphi:
protected
function GetName;
procedure SetName(value:...);
private
property Name: string read GetName write SetName;
C#:
private String name;
public String Name
{
get
{
//代码或者调用函数
......
return name;
}
set
{
//代码或者调用函数
name = value;
}
}
.NET FRAMEWORK 3.0后可以这么写了(:
private String name;
public String Name
{
get{}
set{}
}

Java:
private String name;
public String GetName()
{
......
return name;
}
public void SetName(String _name)
{
name = _name;
}
 

轻舞肥羊

Unregistered / Unconfirmed
GUEST, unregistred user!
C++和JAVA没有属性这一概念......只有方法
读个值都要用方法,最烦的是加括号
用过D再用C++会觉得这点很不爽的
 
H

hbezwwl

Unregistered / Unconfirmed
GUEST, unregistred user!
人家技术就是有问题,也没什么,不愿意提高的人多了去了,
但是这个经理说话的方式有问题,这是肯定的.
 
T

tseug

Unregistered / Unconfirmed
GUEST, unregistred user!
都是怜香惜玉的,换个男程序员不知道大家会怎样呢?[:D][:D]

不知道这个“经理”是什么经理,是项目经理、部门经理、公司的总经理?

如果是项目经理,个人感觉他非常不合格。且不说沟通交流问题,即便是在人员
组织、任务分配、过程的监督控制、项目组内的规范制订和执行也存在欠缺。作
为一个项目经理,在接受项目前,是否对项目进行过深入了解呢?项目经理是否
把项目的工作内容、进度、质量要求等介绍给项目组成员了呢?项目实施前,项
目经理首先要对人员的水平能力进行了解之后才能根据工作量多少、难易程度以
及进度要求、质量要求对任务进行安排分配,凭感觉拍脑门是不行的。还有,不
论什么项目,监督检查、发现问题、整改完善贯穿于始终。在程序员完成了大量
代码之后才发现问题,显然是前期的工作没有做到位,早干嘛去了?在发现问题
后不去充分沟通寻求解决问题的办法,张嘴指责下属,还真把自己当领导了。总
而言之不是项目经理失职,就是项目经理不称职。

如果是部门经理,队伍的建设应该是基本工作之一吧?一年半的时间,对于下属
是否有过培训或者指导?对于各种规范是否组织大家学习过?如果没做到,也没
什么资格去指责别人。如果仁至义尽,该做都做了,这个妞太笨,那就更没必要
费口舌了,直接告诉人力资源他不称职,建议换岗或者合同期满解除合同就完了。

如果是总经理,没什么说的,看来是小公司,有能耐换地方,没能耐就忍着吧。
 
C

cpj7406

Unregistered / Unconfirmed
GUEST, unregistred user!
这个评理的事情,惊动了这么多富翁,更包括一些资深的老江湖,本人不胜感谢!

事情在公司里的结果是:我那位女同事引咎辞职了,主动为她所主要负责的一个油田信息系统及工作流定义工具的质量问题、延期问题承担责任,大家基本都认同。

我所在的这个单位是个河北的小企业,10 多个上班的人,其他外地搞营销的我也不知道几个,我说的我们经理是个技术经理(副经理)。

唉!生活呀... ...
 
G

gchy

Unregistered / Unconfirmed
GUEST, unregistred user!
搬个小凳认真听......
 

郭玉梁

Unregistered / Unconfirmed
GUEST, unregistred user!
我认为这个问题和男女没关,这件事吸引眼球,我认为牵涉到两个问题
1、开发水平
2、项目管理
这两个阶段,是我们大部分人都要经历的阶段,在一个公司开发时间长了,自然就混到项目经理,国内公司大部分都这样,小公司尤其如此,所以,项目管理基本都不合格。项目开始,就要找适合项目的人或者进行培训或者找第三方资源,风险评估预案什么的。PMP大家有机会多看下,人生也是个项目,也需要规划
 

小雨哥

Unregistered / Unconfirmed
GUEST, unregistred user!
哈哈,很受益。tseug 对经理“份内”的精确写照非常精彩。想告诉上面一直在拿“软工”说事的富翁,由于国内项目经理等职位的提升,
大多由真正的技术出生的人承担,而非专业的职业经理人在从事,所以,国内基本上无“软工”,所以麻烦就不要再提“软工”这档子事情了。
不信你可以回忆一下,是否你在写软件的时候真的是想着“软工”的,假如你是想着“软工”的,那么这个讨论不适合你,因为你即便使
用 record 来定义 Object,我都不会觉得稀奇。

muhx 讲到的几个描述和用法经验我也是很受益,但前面有些说法和后面一些说法有点不太一致,不知道是什么原因。

对郭玉梁的断言我也同意,但觉得这样说,没什么太大意义。

最后对 cpj7406 的女同事 MM 说句良心话,既然已经辞职了,但就我的感觉而言,其实真的觉得她并不适合做写代码这一行,也许其他行
业更能发挥她的能力。我有什么没说对的地方,也望大家谅解。
 
C

CoolSlob

Unregistered / Unconfirmed
GUEST, unregistred user!
看完,无地自容.[:(]
 

菜鸟黄

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么还在这里聊这些无关小事,太过大惊小怪了吧~在现今这种现象也不小见啊~怎么还.....
 
Z

zqw0117

Unregistered / Unconfirmed
GUEST, unregistred user!
这种帖子的魅力就是看回帖!哈哈
 

地质灾害

Unregistered / Unconfirmed
GUEST, unregistred user!
var
mytest: TTest;
myvarb: integer;
begin
mytest:=TTest.Create;
myvarb:=@mytest.VarB;
myvarb^:=1231231;
ShowMessage(IntToStr(mytest.VarB));
mytest.free;
... ...
ShowMessage(IntToStr(myvarb^))
// 可能引发异常
end;

而这样的不正常引用不会被编译器发现,出错的时候也很难发现,当然,在这个例子里面很容易。

当年我第一次知道有属性这个概念的时候,真是Happy得不得了,不知道现在还有人会抗拒使用属性啊。。。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
放屁!
myvarb: integer;
myvarb:=@mytest.VarB;
这样的代码能通过编译么?Integer和Pointer不用显示转换就可以赋值么?你通过写方法来控制读写 就没有办法获取引用了么?知道Application.MainForm属性是可以被修改的吗?
procedure ChangeMainForm(AForm:TCustomForm);
type
PCustomForm = ^TCustomForm;
var
pForm:pCustomForm;
begin
pForm:=@Application.MainForm;
pForm^:=AForm

end;
成员访问控制程序员心里一片明镜 自己写的代码还不清楚要避免哪些违规访问 可以去死了。
 
D

dirk

Unregistered / Unconfirmed
GUEST, unregistred user!
to skyweb,
TTest = class(TObject)
private
FVarA: string;
public
VarB: integer;
property VarA: string read FVarA write SetVarA;
end;
直接read FVarA的,和把FVarA放在public里没有区别,一样可以取地址修改私有变量。
 
J

jacket84

Unregistered / Unconfirmed
GUEST, unregistred user!
其实在属性中这样定义
property VarA: string read FVarA write SetVarA 这个时候可以直接取地址修改的,
但是像这样
property VarA: string read GetVarA write SetVarA 这样是无法取地址修改,甚至无法编译通过的,因为GetVarA 这时候是个event pointer。

type
PS = ^string;
var
t: TTest;
P1: PS;
begin
t := TTest.Create;
try
P1 := @t.VarA;
P1^ := 'dfdf';
showmessage(t.VarA);
finally
t.free;
end;
end;
 
F

feng547

Unregistered / Unconfirmed
GUEST, unregistred user!
我來學習的,這種貼的回帖值得收藏
^_^
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
889
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部