php编程的五个好习惯Word下载.docx

上传人:b****6 文档编号:20024397 上传时间:2023-01-16 格式:DOCX 页数:24 大小:25.83KB
下载 相关 举报
php编程的五个好习惯Word下载.docx_第1页
第1页 / 共24页
php编程的五个好习惯Word下载.docx_第2页
第2页 / 共24页
php编程的五个好习惯Word下载.docx_第3页
第3页 / 共24页
php编程的五个好习惯Word下载.docx_第4页
第4页 / 共24页
php编程的五个好习惯Word下载.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

php编程的五个好习惯Word下载.docx

《php编程的五个好习惯Word下载.docx》由会员分享,可在线阅读,更多相关《php编程的五个好习惯Word下载.docx(24页珍藏版)》请在冰豆网上搜索。

php编程的五个好习惯Word下载.docx

16

17

18

19

<

?

php

functiongetNBDay($d)

{

switch($d){

case5:

case6:

case7:

return1;

default:

return($d+1);

}

}

$day=5;

$nextDay=getNBDay($day);

echo("

Nextdayis:

"

.$nextDay."

n"

);

>

例2则给出了使用良好命名方式的代码。

重新命名函数是为了更好的反映它们的功能。

变量也重新命名为描述性的。

只有一个在循环中的$i还使用短的变量名。

尽管有些人不同意,短变量名在循环中是请允许的——甚至更好些,因为它们清晰的起到了指针的功能。

Listing2.Good:

Reflectiveyetconcisenames

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

define('

MONDAY'

1);

TUESDAY'

2);

WEDNESDAY'

3);

THURSDAY'

4);

FRIDAY'

5);

SATURDAY'

6);

SUNDAY'

7);

/*

*

*@param$dayOfWeek

*@returnintDayofweek,with1beingMondayandsoon.

*/

functionfindNextBusinessDay($dayOfWeek)

$nextBusinessDay=$dayOfWeek;

switch($dayOfWeek){

caseFRIDAY:

caseSATURDAY:

caseSUNDAY:

$nextBusinessDay=MONDAY;

break;

$nextBusinessDay+=1;

return$nextBusinessDay;

$day=FRIDAY;

$nextBusDay=findNextBusinessDay($day);

"

.$nextBusDay."

我鼓励你在函数中分隔长的条件给函数命名,以便于描述这个条件。

(玉米:

这句话啥意思?

5555)这个技巧会让你的代码容易阅读和扩展,因此它可以被抽象复用。

如果条件发生了改变,这样也会很容易更新函数.由于方法有一个见名知义的名字,化码就不会失去它本来的意思或者变得难以理解。

使用更少的代码

编写代码、解决问题是一种容易的事情。

当你解决一个正在发生的问题,编呀编,写呀写,你的方法越来越长。

只要你回头使用更少的代码来重构,就是过了很久也没什么问题。

重构是个好主意,但你应该养成第一次就写出更短小精悍代码的习惯。

在一个窗口上(玉米:

不用翻页)就能看全的短小函数更容易理解。

要是一个函数长出了窗口,就很难理解了,因为你不能快速的从头到脚的浏览整个代码。

当构思一个方法的时候,你还应该养成一个让它们只做一件事情的习惯。

以下因素写代码时应常注意。

第一,只做一件事情的函数更易于复用。

第二,这样的函数测试更方便。

第三,这样的函数好读易懂方便改——如果必要的话——让它们尽可能的简单吧。

坏习惯:

过长的函数(很多时候)

例三是过长函数的表现。

它不知道自己要做什么。

它做太多的事情,所以没有集成化。

它更难以理解,不好Debug和测试。

它遍历文件建立列表,它给对象赋值,它做一些计算,……它耕田,它浇水,甚至做更多事情。

(^_^)

例三.坏习惯:

过长函数

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

functionwriteRssFeed($user)

//GettheDBconnectioninformation

//lookuptheuser'

spreferences...

$link=mysql_connect('

mysql_host'

'

mysql_user'

mysql_password'

ORdie(mysql_error());

//Query

$perfsQuery=sprintf("

SELECTmax_storiesFROMuser_perfsWHEREuser='

%s'

mysql_real_escape_string($user));

$result=mysql_query($query,$link);

$max_stories=25;

//defaultitto25;

if($row=mysql_fetch_assoc($result)){

$max_stories=$row['

max_stories'

];

//gogetmydata

SELECT*FROMstoriesWHEREpost_date='

mysql_real_escape_string());

$feed="

rssversion="

2.0"

.

channel>

title>

MyGreatFeed<

/title>

link>

description>

Thebestfeedintheworld<

/description>

language>

en-us<

/language>

pubDate>

Tue,20Oct200810:

00:

00GMT<

/pubDate>

lastBuildDate>

/lastBuildDate>

docs>

generator>

MyFeedGenerator<

/generator>

managingEditor>

editor@<

/managingEditor>

webMaster>

webmaster@<

/webMaster>

ttl>

5<

/ttl>

;

//buildthefeed...

while($row=mysql_fetch_assoc($result)){

$title=$row['

title'

$link=$row['

link'

$description=$row['

description'

$date=$row['

date'

$guid=$row['

guid'

$feed.="

item>

.$title."

.$link."

/link>

.$description."

.$date."

guid>

.$guid."

/guid>

/item>

/rss"

//writethefeedouttotheserver...

echo($feed);

要是你再加更多东西到这个函数里,它会很快变得难以维护。

好习惯:

可管理,集成化的函数

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

functioncreateRssHeader()

return"

functioncreateRssFooter()

/channel>

/rss>

functioncreateRssItem($title,$link,$desc,$date,$guid)

$item.="

return$item;

functiongetUserMaxStories($db_link,$default)

$result=mysql_query($perfsQuery,$db_link);

$max_stories=$default;

}

return$max_stories;

$settings=parse_ini_file("

rss_server.ini"

$link=mysql_connect($settings['

db_host'

],$settings['

user'

],

$settings['

password'

])ORdie(mysql_error());

$max_stories=getUserMaxStories($link,25);

$newsQuery=sprintf("

mysql_real_escape_string(time()));

$result=mysql_query($newsQuery,$link);

$feed=createRssHeader();

$i=0;

if($i<

$max_stories){

$feed.=createRssItem($title,$link,$description,$date,$guid);

$i++;

}else{

mysql_close($link);

$feed.=createRssFooter();

把长函数分割会导致效率降低,所以要注意,这个好习惯不要使用过度。

这样做可能也会引起阅读性差,跟原来人家是一个整体时没什么区别。

注释代码

注释你的代码有时就像你刚着手写代码一样困难。

明确注释内容很棘手,因为他要写出代码要做什么。

注释变量是一个好主意。

在函数头部注释可能不太明显时,就可以告诉阅读者函数要什么参数,有什么返回以及主要的意图。

通常大家会注释代码是做什么的,但这并不必要。

如果代码让人困惑以至于你不得不写注释说它是做什么的,这就提示你应该重写它,使它更好懂。

命名良好、更加短小、组织合理的代码习惯会让你的代码用不着注释就拥有很高的可读性。

压根没有或者叽叽歪歪的函数注释(^_^)

例5的注释只给出了代码在做什么——它的通过循环的遍历、加了个数。

但是丢了为什么这么做和要做什么。

这会让别人难以不影响原代码的情形下安全修改的做出修改。

例5:

压根没胡或者叽叽歪歪的函数注释

classResultMessage

private$severity;

private$message;

publicfunction__construct($sev,$msg)

{

$this->

severity=$sev;

message=$msg;

publicfunctiongetSeverity()

return$this->

severity;

publicfunctionsetSeverity($severity)

severity=$severity;

publicfunctiongetMessage()

message;

publicfunctionsetMessage($msg)

functioncntMsgs($messages)

$n=0;

/*iteratethroughthemessages...*/

foreach($messagesas$m){

if($m->

getSeverity()=='

Error'

){

$n++;

//addonetotheresult;

return$n;

$messages=array(newResultMessage("

Error"

"

Thisisanerror!

),

newResultMessage("

Warning"

Thisisawarning!

Thisisanothererror!

));

$errs=cntMsgs($messages);

echo("

Thereare"

.$errs."

errorsintheresult.n"

注释函数和类

例6里的注释标明了类和函数的意图。

注释表明方法做了什么和为什么做,这会对将来了解代码的意图很有帮助。

环境的变化会需要你进行代码修改,这就会让很容易的知道开始时你代码是做什么的。

例6.好习惯:

注释函数和类

/**

*TheResultMessageclassholdsamessagethatcanbereturned

*asaresultofaprocess.Themessagehasaseverityand

*message.

*

*@authornagood

/**

*ConstructorfortheResultMessagethatallowsyoutoassign

*severityandmessage.

*@param$sevSee{@linkgetSeverity()}

*@param$msg

*@returnunknown_type

publicfunction__

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1