来讨论讨论,好心给他指出错误,他说我这是谬论

mikespook 2004-01-08 09:29:16
http://expert.csdn.net/Expert/topic/2642/2642826.xml?temp=.8104975

我是从软件工程低偶合、高内聚角度来说。我以为 function 中使用include根本就是错误的做法。虽然从语法上是允许的,但是这绝对不利于软件的后期维护。也不利于模块化复用。大家看看软件工程的书就知道了。这种叫做代码偶合,是绝对的高偶合,低内聚的东西!!!!

建议赶兴趣的朋友可以去www.chinaunix.com看看前段时间,关于 PHP 的 CLASS 的讨论!

还有,我跟这篇帖子的楼主说一下~~~你以为你很牛啊?随随遍遍就说别人说的是谬论?写程序把“==”都能写成赋值号,新手吧?犯的错误都不一般~~~哈哈哈哈~~~(对,我就是要刺激你一下。“小强,叫你小强你就真强啦?踩死你!踩死你!踩死你!……臭蟑螂!!”)
...全文
49 32 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
linjianwu 2004-01-08
  • 打赏
  • 举报
回复
如果方便的话。请楼主给个例子说说看。在function中使用include的例子
或许我有更好的见解。也想看一下这其中的不足之处。
但是,我的第一感觉是有点怪怪的!
欢迎更多的php的朋友进入讨论!!!
xuzuning 2004-01-08
  • 打赏
  • 举报
回复
1、在函数中有条件的include完成某个特定任务的程序块,这是无可非议的。这恰恰是php为加速程序的运行的一种有效的手段。着与“软件工程的低偶合、高内聚”并不矛盾
2、php是函数型语言,且不支持函数的重载。终究有一天你会发现具有明确示意的函数名都被用光了,给函数命名也成了头痛的事情。
3、于是php引入了“类”。继承、重载当然可以较好的解决一些矛盾,但也带来一些新的问题——程序文件增大、复杂结构的解析导致运行速度下降。
4、php作为B/S结构的服务方语言,运行效率始终应放在首位

一点浅见,敬请指正!
争论是正常的,漫骂就不好了。

flyonet 2004-01-08
  • 打赏
  • 举报
回复
呵呵,也难怪
是有点奇怪的用法,从常理上来看,真的不适合在function中include,有点奇怪。
mikespook 2004-01-08
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2644/2644526.xml?temp=.1727869

另开一帖讨论~~~
本帖就算是送分了~~~
qing205 2004-01-08
  • 打赏
  • 举报
回复
在程序上看来都没错,但是 在function中include确实不好,我从来没有这样用过! 怪怪的!
维护也比较麻烦!
mikespook 2004-01-08
  • 打赏
  • 举报
回复
我不生气~~~呵呵~~~~

我把主题改改~~~~
现在的主题是:如何提高PHP程序的复用,如何降低偶合,提高内聚

前段时间在CU上讨论过,我再拿这来问问~~~能学不少东西的话题~~~~

高手都出着吧~~

顺便说一下接分的别来了~~~~讨论问题的进~~~
countstars 2004-01-08
  • 打赏
  • 举报
回复
用得好的话可能也相当有用,不过也可能造成维护困难。具体的没试过在function中包含include
ib915 2004-01-08
  • 打赏
  • 举报
回复
楼主别气了,来CSDN都是讨论问题的,出现嘴角冲突是不可避免的了
xizi2002 2004-01-08
  • 打赏
  • 举报
回复
呵呵~~~平反~~
程序中的最好不用绝对的正确与错误.
xuzuning 2004-01-08
  • 打赏
  • 举报
回复
不过,并没有看到什么新意。
你可以看一下精华区中我的“树”类
如果你有我的netBook那么你就能看到更多的了
milkliker 2004-01-08
  • 打赏
  • 举报
回复
o
mikespook 2004-01-08
  • 打赏
  • 举报
回复
3,比如说最近我在写一个树形结构时遇到一个问题,想打开一个有三级的目录,并且最高级的就六个甚至更多,我想用一个函数来实现,写了一下午也没有成功,也许阁下可以指教一下。

递归呢?这样的问题好象递归会简单些~~~

http://bbs.chinaunix.net/forum/27/20040108/239532.html

shukebeita 太牛,牛得比牛还牛~~~~看看他这个~~~
bonniewater 2004-01-08
  • 打赏
  • 举报
回复
ustb(偶然)的这个写法应该叫重构,和重载不是一个事
lang11zi 2004-01-08
  • 打赏
  • 举报
回复
episome 2004-01-08
  • 打赏
  • 举报
回复
网络嘛,必然又不合意的事咯.
不过这样也好,高手都出来争论了...

太长了,save回家研读.

消消气,过年了.
ustb 2004-01-08
  • 打赏
  • 举报
回复
上回说到……
错了。
1,既然都不支持用include那就扔开吧。
2,先把香槟干了。
3,比如说最近我在写一个树形结构时遇到一个问题,想打开一个有三级的目录,并且最高级的就六个甚至更多,我想用一个函数来实现,写了一下午也没有成功,也许阁下可以指教一下。
4,规范固然是好的,我也支持,但不应强求,为了规范而规范那就有点^-^
5,是我不对,检讨,不过我可能会先继承一下然后重载方法。没有阁下的简单,但应该再规范了吧(全是类,一个函数都没有)。
6,两个版本的代码一个是类写的,一个是函数写的。有可能你来写类花的时间比函数的更少。我比较菜。
7,
/* 我不知道这叫不叫重载,但我习惯于这样用,个人感觉不容易出错。*/
class thx
{
var $mName;
var $mWord;
function thx($name,$word)
{
$this->mName = $name;
$this->mWord = $word;
}
function write()
{
echo "感谢".$this->mName."参与讨论。并祝".$this->mWord;
}
}

class newthx extends thx
{
function write($user,$words,$date)
{
echo "感谢".$user."参与讨论。并祝".$words."-------".$date;
}
}

$name = "mikespook(Mike大懒猫)";
$word = "新年快乐";
$date=date("Y-m-d H:i:s");

$thx1 = new thx($name,$word);
$thx1->write();
//-------------------------------
$thx2 = new newthx($name,$word);
$thx2->write($name,$word,$date);
mikespook 2004-01-08
  • 打赏
  • 举报
回复
4、你的thx类的write方法如写作

这个我并不赞成~~~~

这样的话实际上filename.h的复用就很低。我不能保证每个类似的函数中都是用mWord的成员变量,或者varary的内部变量。

不过如果“那么就可以不修改程序而改变输出的内容,哪怕是程序被编译了”似乎也只能这样include。

看来我这个类设计的有问题喽,呵呵~~
mikespook 2004-01-08
  • 打赏
  • 举报
回复
THX xuzuning。理解你的意思了~~~

那么你说的“2、当你include的文件很大,比如含有数百k的对照表时。你就会感觉到了”
是不是就是在类似编码一类的程序中编码表这样使用就会有优势?
xuzuning 2004-01-08
  • 打赏
  • 举报
回复
1、function在过程里叫“函数”,在类里叫“方法”。这不仅仅是称谓问题,因为他们有质的区别
2、当你include的文件很大,比如含有数百k的对照表时。你就会感觉到了
3、在函数需要较多的参数时,在调用时罗列参数也是很费劲的。若以全局变量出现,倒也是可以的。尤其是你在移植c程序时。使用include引入全局变量声明,也不失为好办法。

4、你的thx类的write方法如写作

function write()
{
$varnum = func_num_args();
$varary = func_get_args();
switch($varnum)
{
include "filename.h";
}
}

filename.h
<?
case 0:echo "感谢".$this->mName."参与讨论。并祝".$this->mWord;break;
case 1:echo "感谢".$this->mName."参与讨论。并祝".$varary[0];break;
case 2:echo "感谢".$$varary[0]."参与讨论。并祝".$varary[1];break;
?>
那么就可以不修改程序而改变输出的内容,哪怕是程序被编译了
Meteorlet 2004-01-08
  • 打赏
  • 举报
回复
除非很复杂的对象,一般尽量不要写成类,类的构造和析构总是会耗时间和资源的
我个人觉得PHP是继承了C的过程编程,类的加入只是后来添加的功能,主要是为了
面向对象编程,有利有弊。就象Dreamweaver一开始软件总是很小,很方便,版本越
来越高,软件就越来越大,加了很多功能进去,启动很慢,有时候也不一定就是最好的。
又好比,简单的文字编辑我还是喜欢用notepad,在运行里输入notepad就行了,启动
很快,系统自带,只要是windows机器都可以用,还可以保存成任何类型的文件,
有时候简单一点也没什么不好。
关于系统整合,代码和视图分离,要做个通用平台确实不是简单的事,毕竟网页设计者
和代码编写者之间不是那么容易沟通,还是需要具体问题具体分析。
加载更多回复(12)

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧