![]() |
1
2
取决于经验和项目复杂性/大小。对于敏捷方法,您应该 为最简单的应用程序计划 顾客 (或用户)某种价值 和 适合短期释放周期(1-3周)。你已经有了一个原型和模型 ups,所以您的用例和需求有些清晰。但你还是应该计划 你的应用程序的一个子集 完成 在规定的期限内。 如果你事先计划好,你会面临一些困难的问题,这些问题可能会让你慢下来。 那是因为你试图设计你的软件来解决这个问题。但通常 如果你真的要处理这个问题,你会找到一个更简单的解决办法 将消失,因为某些要求已更改或简化。想象你在写 一个博客应用程序。显然你想要一个所见即所得的小部件。在前面你花时间 评估现有的解决方案,甚至自己编写一个解决方案。最后发现 大多数用户喜欢使用纯文本或要求简化标记。 你花了3天到几周的时间白白浪费。开始的时候非常简单, 你会知道人们什么时候需要更奇特的东西。
不确定这个问题。如果你谈到数据库和面向对象设计,那么 不会有高回报的。通常一个简单的数据库模式放在 分钟,并随着时间的推移而发展(包括重新分解、标准化)。你的建筑也一样。 这又取决于您的经验,如果您不太了解数据规范化 或者如何应用MVC(即使是在很低的层次上),那么你应该教育自己 很少。
保持简单。学习一个完整的堆栈框架(如Symfony或Cake) 可以 保存 很多时间,但他们都有一个像样的学习曲线 将 遇到的问题 不是微不足道的(至少在扩展/性能方面)。一个好的抽象代码库并不总是 不需要也不有用,对我来说,只要它是可测试的就足够了。有小爱好的项目或 我接受php的简单性。
别误会,学点新东西总是件好事。但是 清除代码 从你的头脑,你思考,处理和抽象问题的方式开始。xCSS只是 一种会消耗学习时间和引入其他问题的玩具。也要记住 如果你想委托设计任务,你需要找到能使用它的人。 这些年来,我对这些工具和库越来越保守。 通常,您会遇到一些限制或问题,必须实现丑陋的 或者你必须挖掘并理解整个源头。如果它给你 一些巨大的价值,它可能是值得的,但正如我所说,xCSS是一个玩具。
也许这是你们其中一个或两个的误会。细粒度并不意味着 您应该分别提交每个getter/setter或任何新方法。这通常是合乎逻辑的 一致的承诺(应该有效)。 示例:
提交和注释应该可以很容易地找出何时引入了错误或何时 代码库已更改。一个好的规则是用一行代码作为注释,这对 分析配置管理日志。有大量不连贯的提交,其中包含冗长甚至匿名的评论 实际上,您不得不查看变更集。 此外,还可以将特定更改导出为易于应用于其他应用程序的修补程序 分支甚至存储库。
整体考虑。具有简洁功能的简单GUI工作良好,因为它是可访问的 而且很容易理解。很容易理解三行中的基本for循环,但是 抽象对象树涉及到几十个间接操作,这很难实现。很多开发商不会承认,但是 真的很难。 大规划的代码设计前期是死的。重构和单元测试应该推动 您在不断发展的应用程序中的设计。然而,手边有纸和笔来进行头脑风暴 几分钟的解决方案总是健康的。 |
![]() |
2
7
很高兴又看到37号信号风扇! 这是他们网上书里的一句话, Getting Real :
基本上, 决定发射日期 . 减少总数 范围 你的申请在那一天发布的最低限度。这将帮助您及时获得应用程序,并为您提供实时数据。 如果你已经弄清楚了作用域部分,并且想把重点放在编码问题上,那么你应该特别看看这个部分, Managing Debt :
简而言之,在一开始就放弃xcs的实现,但要确保在稍后的阶段回到它。阅读第九章和第十章“接口”和“代码”。 最后,我最喜欢的一句话是:
希望你们能打造出一款可以向全世界展示的伟大产品。快速解决这些问题也是另一个节省时间的好方法!:) |
![]() |
3
3
我对你的点没有明确的答案,但在我看来,“太多”是指任何超出“工作代码”范围的东西 尽快把这件事中最简单,最卑鄙的一点准备好! 让代码变得难看-它无论如何都会被替换的 让设计看起来像狗的屁股-它无论如何都会被替换的 让事情变得不确定和不安全-它无论如何都会被替换的 这个想法是让一个内部原型尽快启动和运行。如果它可以被跳过,并且仍然在浏览器中“使用核心思想”或其他什么东西,那么就跳过它。 一旦你有了 某物 工作,不管多糟糕,第一步就完成了。 第二步是循环的-回到你已经写过的,让它更好。然后,转到步骤2 这个 只有 在步骤1中,我不会跳过的部分是单元测试,这是因为在编写代码之前,我使用单元测试来表达我对代码应该做什么的想法。一旦单元测试通过,那部分就完成了-下一步! 步骤2包括重写代码,使其更干净,处理更多的边缘情况,并且更容易更新、维护和构建。这些都涉及单元测试(通常涉及重写单元测试) 基本上,你的朋友是对的-除了在单元/集成测试方面 |
![]() |
4
3
我想说的是,为了说服你的朋友,你需要关注的主要话题是“敏捷估计和规划”。很多人认为敏捷意味着完全没有计划,这是不对的。Scrum——一个基于敏捷原则的软件开发框架建议每个项目从发布计划开始。你的大部分问题都将根据Scrum指南来回答。
让我们退一步来理解“准备”的含义,它的含义比一个庞大的规划和设计会议更深刻。准备意味着-Scrum发布计划、Sprint或迭代计划、每日Scrum会议计划。你真的从来没有停止你的“准备”工作,它继续。你计划失败的那一刻,就是你计划失败的那一刻。 Scrum发布计划通常只需要一个组织花费15-20%的时间来构建一个传统的发布计划。在这次会议中,我建议您编写一个业务史诗用户故事,以及技术史诗用户故事,并将它们快速分解成块。你不需要详细说明,细节将在Sprint计划中处理。在Sprint计划期间,只需将高优先级的用户故事整理到正确的细节级别,并承诺在当前迭代中完成它们。对于2周的迭代,Sprint计划不应超过4小时。每天的Scrum同步会议只会持续15分钟,因为只有你们两个,所以时间可能会更短。
在迭代过程中,当你在实际工作中遇到障碍时,你会知道你“准备”得太少了。当事情进展顺利的时候,你知道你花了足够的时间准备。
试着集中精力回答下面这个简单的问题: 我们怎样才能以最好的方式把愿景变成一个成功的产品?, 商业史诗般的用户故事,技术史诗般的故事——从技术和基础设施的角度来看,这将是您的产品愿景。例如-你打算使用TDD,持续集成计划,版本控制计划等等。你永远不能忽视这些,无论你尝试了多少。另一件事是找出谁是你的产品用户。ROI和高优先级用户故事的惩罚。为你的产品制定标准,这也适用于你产品的一小部分。我可以继续,所以我会停在这里。
在代码方面,最值得研究的是,需要编码的代码段,以获得最有价值的工作特性和可交付性。你可以通过计算投资回报率和没有完成它的惩罚来做到这一点。您必须知道用户是谁,该特性对用户的好处,以及该特性在交付或未交付时对用户的影响。投资回报率和惩罚越高-价值越高。我知道这说起来容易做起来难,但谁说软件生意容易?
如果你想变得敏捷,那么是的。干净的代码意味着更少的技术债务和更高的软件质量。敏捷建议开发人员持续关注代码的质量。为什么?因为编写敏捷原则的人已经看到太多的项目因为在软件开发过程的早期没有处理技术债务而失败。
与用户故事相关联的细粒度任务的集合,当根据done标准完成时,将生成可交付的软件片段。 我会这样解释:把你的产品想象成一个多层蛋糕。在你开始制作整个蛋糕之前,你需要知道它将是什么口味的蛋糕,以及它将有多少种不同的层次。风格是模拟屏幕和史诗般的用户故事,层次来自技术史诗故事。这些层包括数据库、中间件、服务器端代码、html、皮肤等。现在一次性构建完整的蛋糕是个坏主意,因为喜欢蛋糕的客户经常会改变他们想吃什么样的蛋糕的想法。一个完整的蛋糕可能比一小块蛋糕需要更长的时间来制作,如果你制作完整个蛋糕(比如巧克力蛋糕)后,顾客要求一个胡萝卜蛋糕怎么办?这会导致一些丢弃的蛋糕或代码:)相反,为什么不一次建立一个小的垂直切片,让客户品尝它,得到一些反馈,相应地修改下一个切片,并不断添加切片,以创建一个完整的蛋糕,这是客户真正想要的!!
使用分离设计,使用接口继承多于类继承,代码评审,TDD,PMD,Checkstyle,Pair编程,与客户的协作,列表继续。 所有这些事情都会让你的产品“完蛋”。你以后跳过的上述项目越多,你的发货日期就越长。我宁愿给顾客送上一块美味、优质的小蛋糕,也不愿送上一块质量低劣、还没做好的小蛋糕。 |
![]() |
5
1
找5-10个你认为对你的网站感兴趣的人来试试。如果你做不到,你们俩就没什么好争论的了。 在用户面前使用它应该解决两个问题:
完全陌生的人显然会更挑剔,如果被耽搁就永远不会回到你的网站。你身边的人会给你第二次或第三次机会。如果你想创建一个FaceBook克隆,你至少要上传照片并共享它们。等待20秒。为了让主页加载您的猫的图片,要求用户手动键入完整的文件路径,并花5分钟上传一个100kb的jpeg文件将发送用户点击离开。 |
![]() |
6
1
由于其目的是快速发布并在此基础上进一步发展,我想说,使用您最熟悉的技术是至关重要的。如果你是一个优秀的OO程序员,那么就使用OO。如果您真的了解数据库,请花几个小时来设计模式。 你能绝对保证的一件事就是代码会改变。比起试图为一个尚未完全理解的问题设计优雅的代码,IME猛击一堆代码,然后扔掉其中的一半,是一种更好的方法。草率的代码会被替换掉,它的双重作用是发布一些东西,帮助你理解你在做什么。 太多的准备是当你花数小时/数天的时间去寻找某件事却没有找到答案。解决方法:按照你的第一印象去做。 要决定代码方面的工作,代码与关键特性直接相关。 不,你不知道的东西(如xCSS)不值得学。最好是使用一些你确实理解并不断完善的知识 然后雇佣真正的专家 . 前面已经说过了,我首先要做的一件事就是有层来保持DB、逻辑和UI分离。当我开始使用PHP时,我希望有一个小的框架来完成我没有的所有乏味的工作(Db等),所以最终我以opensource的身份发布了我的工作。我当然建议你读书 how I'd build Db/Logic/UI using my framework 作为一个例子。 |
![]() |
A. Shawkat · 获取请求不起作用 7 年前 |
![]() |
Yura · 无法链接引导。min.css和动态web app 7 年前 |
![]() |
jasonharper · 无互联网连接的WiFi连接设备的最佳实践 7 年前 |
![]() |
Thanh Dong · 在spring boot web应用程序中运行jar文件时,创建名为“ConfigurationPropertiesBindingPostProcessor”的bean时出错 7 年前 |
![]() |
Karim Sawma · react web app中缺少滚动条 7 年前 |
![]() |
Nathan · Flask API回调侦听器 7 年前 |
![]() |
David Artmann · Vaadin网格日期渲染器不适用 7 年前 |
![]() |
Hayden · 如何防止计数器的增量超过元素的高度? 7 年前 |