随着项目规模的扩大,我的生产力正在下降.如何随着项目规模的增加提高生产力?

chr*_*ris 7 php workflow

我最初开始使用一个小项目,编辑php文件,例如在记事本++中.过去很容易想到一个功能,并将其作为单独的文件添加到项目中.随着项目变得越来越大,我的生产力开始下降,因为我记不起我所做的所有功能,以及它们存储在哪里等等......然后,我添加了一个IDE(PhpEd)和SVN,然后注意到了大大提高了生产力.

我发现自己的工作效率再次降低(因为一切都变得太复杂了).这个项目大约有20个左右的文件 - > 100个文件,并且变得难以管理(即使使用IDE) .我想知道人们是否就如何再次提高生产率所做的建议.(下一个级别是什么?如果有的话)

关于如何进行程序设计的任何软件工具或技巧/至少可以使事物更容易可视化?

我知道没有银弹,但任何想法都会有所帮助.

例如,除了IDE/SVN之外,你们是否使用某些工具来度过这一天.另外,你是否以某种方式编写代码,以便将来不会出现问题?(详情请).

Pau*_*ulo 12

绘制和/或写出来.如果你说它"全在你脑中",那么请花一些时间远离编码并记录你的工作.这可以包括解释你为什么做某事的段落.

图表和其他视觉效果也将帮助您保持井井有条.

我发现一些程序员忽略了项目中的非技术因素.对于没有组的结构来指导它们的单独开发人员来说尤其如此.您的工作不仅仅是代码,您应该查看流程的所有方面.


Sef*_*ler 9

永远不要为在记事本中编辑代码感到自豪!IDE节省您的时间并提高您的效率.当项目变大时,您应该关注项目管理并坚持高效的"流程模式",例如RUP(Rational Unified Process),EUP或OOSP.您的SVN是SCM的一部分.当然,模式中定义的活动要多得多.对于文件管理问题,您可以将它们分成不同的包并将它们保存在不同的位置.如果您对"软件工程"一无所知,可以参考Scott W Ambler或其他人撰写的有关SE(软件工程)的书籍.请记住,软件远不止代码!

一个优秀的开发人员知道开发比编程更多.一个伟大的开发人员知道开发比开发更多.作者:Scott W Ambler

  • 他已经提到他使用IDE ... (6认同)
  • 他已经提到了IDE,他在问下一步是什么......以及所有那些moppets up-vote最高答案...... (4认同)

Dav*_*ave 7

测试驱动开发可能对您有用.

首先构建测试,然后编写代码以通过这些测试.

当您添加/更改任何代码时,请运行回归测试套件以确保您没有破坏某些内容.根据我的经验,这可以节省大量时间,特别是当应用程序的复杂性和大小增加时.


Dav*_*ley 6

冷酷的事实是开发人员的效率会随着项目规模而下降.这已经数十年了.有一些方法可以帮助,但它们确实需要一些纪律.

最好的解决方案是进入更高的抽象级别.编写将用作构建块的例程,您可以将它们用作标准库或语言构造.记录其接口,并仅对接口进行编程.如果你觉得你需要知道你没有使用的例程是如何实现的,那么你要么使用它错误,要么没有足够的文档记录.添加到界面的速度很慢,删除任何内容的速度都很慢,请记住,更改它的元素会让你感觉很糟糕.

地方是你的朋友.你越专注于一个小区域,你就越好.接口编程有助于此.保持惯例的凝聚力有助于实现这一点,因此惯例一次只做一件事.

面向对象非常有用,因为它促进了上述两个方面.它促进了对接口的封装和编码,并将相关的代码片段组合在一起.

测试驱动的开发对于强制执行接口编程很有价值.根据接口编写测试,而不是基于实现.这具有良好的副作用,测试套件本身有助于定义界面.如果没有进行测试,则不要指望它.确保您可以轻松运行测试套件,并养成习惯.

重构是必要的.计划,特别是在改变任何事情时.你需要干净的代码.此外,您将不可避免地发现您已将功能放在错误的位置.

还要记住,这一切都不会完全解决问题.大型软件项目本质上很难.


Gen*_*ror 5

大型代码库的生产力不仅仅与工具有关,而且与您编写的代码有关.花时间提高新代码和现有代码的质量.是的,它会在短期内减慢你的速度,但它可以让你随着时间的推移保持你的步伐.

无论您的工具或语言如何,这都适用.世界上最好的工具不会帮助那些外出捣乱的人.首先,我会记住一些简单的想法:

  • 代码质量是对未来生产力的投资.
  • 如果你的直觉告诉你代码是坏的,复杂的,错误的,丑陋的...它可能是,修复它.
  • 现在停止写坏代码,而不是明天.

有关如何设计优秀代码的更深入信息,我建议您在此处浏览.


Pra*_*nth 5

我曾经在一个拥有大约一百万行代码(C#,C++)的项目上工作,而且它还在不断增长.

1)为了管理这样的代码库,svn存档的文件夹结构是以模仿我们产品的各种架构层的方式创建的.这样,通过存档找到我们的方式就变得更容易了.

2)我们也有自己的自定义构建工具.如果您拥有庞大的代码库,那么在您想要测试小功能时随时构建所有内容可能是不可行的.我们的自定义构建工具有很多选项,可以以任何粒度构建存档.

3)通常我观察到的是,如果你正确地获得了通用功能/助手,那么在它之上构建新东西变得更容易并且也避免了代码膨胀.

4)如果开发项目的开发人员数量更多,请设置wiki.如果做得好,Wiki文档很容易,搜索能力和帮助.

这就是我现在所能想到的.希望这可以帮助