Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 评论和改进已编写程序的过程?_Php_Scalability_Comments - Fatal编程技术网

Php 评论和改进已编写程序的过程?

Php 评论和改进已编写程序的过程?,php,scalability,comments,Php,Scalability,Comments,请允许我的介绍正确定义我问题的范围: 我对编程界还是个新手。这一切都始于我有了一个软件程序的想法,但没有编程经验。我最终选择了外包的方式来获得这个项目,差不多一年之后,我们的项目已经开始运作了 这个特定的程序是用php编写的,100%基于web。我们使用了大量ajax、jQuery等 现在一年过去了,我一直在尽我所能地学习和学习(这里有很多学习!!!)我现在主要关注Java,以达到Objective-C和iPhone的乐趣(可能像99%的其他新手程序员一样) 我真的学到了很多,我学到的最重要的事

请允许我的介绍正确定义我问题的范围:

我对编程界还是个新手。这一切都始于我有了一个软件程序的想法,但没有编程经验。我最终选择了外包的方式来获得这个项目,差不多一年之后,我们的项目已经开始运作了

这个特定的程序是用php编写的,100%基于web。我们使用了大量ajax、jQuery等

现在一年过去了,我一直在尽我所能地学习和学习(这里有很多学习!!!)我现在主要关注Java,以达到Objective-C和iPhone的乐趣(可能像99%的其他新手程序员一样)

我真的学到了很多,我学到的最重要的事情之一就是适当的评论和可伸缩性

我现在看到我们刚刚完成的这项工作在这两个方面都非常缺乏。我想在这个程序的基础上添加和构建,不仅我没有太多的经验,而且我看到,如果没有这些注释,我甚至很难对函数有一个概念

所以我的问题是,什么是最好的行动方案来开始收拾这个项目的碎片?完全重写是不可能的,我认为没有必要

我相信这不是一些新手程序员、软件开发人员第一次走上这条道路……其他人在这里做什么

一个程序员很早就进入一个项目,然后“清理”这个烂摊子以使事情高效地向前发展,这是很常见的吗

如果这是这个问题的错误地点(我很理解这可能是),有人能告诉我这在哪里更合适吗

谢谢! Joel

我们称之为“”,它是编程的重要组成部分

首先,您必须拥有一套坚如磐石的自动化测试。通常,我们使用单元测试框架运行单元测试

然后您可以进行更改并运行测试,以确认您的更改没有破坏任何内容

在某些情况下,您必须围绕现有程序对测试进行“逆向工程”。这并不困难:您必须关注“外部”或“主要”或“重要”的接口


因为您是逆向工程,所以很难——首先——确定哪些应该测试(因为这是一个重要的外部特性),哪些不应该测试(因为这是一个实现细节)。

我不知道这是否是一个错误的位置,但我会尽可能回答:

一个程序员很早就进入一个项目,然后“清理”这个烂摊子以使事情高效地向前发展,这是很常见的吗

是的,根据我的经验,这是很常见的。我已经做了10多年的合同工作,我无法计算我有多少次不得不进来清理一些匆忙拼凑起来的东西,以使其具有可扩展性或能够在其上添加功能。当您将编程外包给另一家公司时,这种情况尤其常见,因为这样做的动机是让它尽快工作并离开

所以我的问题是,什么是最好的行动方案来开始收拾这个项目的碎片?完全重写是不可能的,我认为没有必要

我不知道这个问题是否有一个“好”的答案,我唯一能告诉你的是,一次只采用一种方法,并记录他们在你理解他们时所做的事情。如果您仍然可以访问最初编写该程序的人员,您可以询问他们是否可以向您提供有关该系统的文档,但如果原始工作规范中未包含该文档,我怀疑他们是否会有任何文档

我真的学到了很多,我学到的最重要的事情之一就是适当的评论和可伸缩性

正如您自己所发现的,适当的评论很重要,我不相信从一开始就按照YAGNI原则在中构建可伸缩性的重要性。我认为随着任何程序的发展,它都会经历成长的痛苦,无论是可伸缩性还是功能性。有人能从一开始就考虑到twitter目前需要的可扩展性吗?有可能,但它确实有可能失败。

程序员很早就进入一个项目,然后“清理”这个烂摊子,以使事情高效地向前发展,这是很常见的吗

这对于几乎每个程序员来说都很常见:)

话虽如此,请记住IIABTFI原则。如果它没有坏,就不要修理它

了解程序是如何工作的以及这些部分是什么是有用的

在没有明确目标和商业目的的情况下试图改进it是不可能的

我真的学到了很多,我学到的最重要的事情之一就是适当的评论和可伸缩性

首先,我很好奇你对“恰当的评论”了解到了什么,因为这一点差别很大。对于一些人来说,它记录了每个类和函数。对于其他人,它可能记录每一行代码,或者根本没有代码

在经历了上面的一些不同阶段之后,我和Bob Martin叔叔在一起,他说您记录决策,而不是代码所做的。代码本身应该是可读的,不需要文档。通过添加描述行为的注释,您创建了最终将失去同步的复制。相反,代码应该记录自己。使用命名良好的函数和变量有助于准确描述其他函数的意图。我强烈推荐使用干净的代码来全面讨论这些概念

至于可伸缩性,它通常是您想要内置的东西。可伸缩性可能是良好设计的功能,也可能是针对需求的适当设计,但是