当前位置:  开发笔记 > 编程语言 > 正文

当我知道我会弄错的时候我该如何建立一些东西?

如何解决《当我知道我会弄错的时候我该如何建立一些东西?》经验,为你挑选了2个好方法。

背景

我有一个个人项目,我一直在努力建立大约5年.从本质上讲,它是一个在线游戏 - 一个Web应用程序.这不是一个"赚钱的人",只是我真正想要建立的东西,因此寻找资金来雇用一支技术熟练的团队是不太可能的.

多年来,我已经构建了两个功能齐全的原型,从概念/用户测试的角度来看都是成功的,但从架构的角度来看,这两个原型都是成功的.代码很乱,无法维护或进一步开发,不得不被抛弃.

需要花费几年时间才能获得构建客户所需的技能 - 这是丰富/有状态且相当复杂的.我将我的职业和学习与发展鸿沟的这一方面联系起来.我终于可以建立一个体面的架构,复杂的客户端,可以成长,不需要在6个月后抛出.在这方面还有很多工作要做,但至少我知道我能做到,并且做得相当好.后端是另一个故事.

到目前为止,我已经使用PHP,SQL,Ruby,CouchDB,MongoDB,FriendlyORM,NodeJS等各种组合重建了后端至少11次.在我发现我的一些巨大漏洞之前,我通常不会走得太远接近并重新开始:RPC到REST,与文档驱动的关系.我很清楚过早优化是万恶之源,但应用程序非常依赖快速移动的高动态数据.RESTful API设计,扩展,分片,缓存,身份验证,复制 - 我对这些都没有太多经验,我不能指望它很快就会变得非常体面.这些事情需要多年的学习和经验.

找到这个领域的专家更有意义,但没有资金我觉得我需要成功部署另一个原型以吸引合适的人.所以,我必须尽可能地建立它.

问题

假设我构建它,后端架构将是错误的并且需要重建,继续构建"足够"以继续开发客户端应用程序的最佳方法是什么?即使它很讨厌,有没有办法"拼凑"一个JSON Web服务?Ruby与Sinatra和MongoDB?Django的?是否有一些开箱即用的Web服务构建器?不需要全栈Web框架,因为没有表示层 - 只有数据.任何建议将不胜感激.



1> Dean J..:

首先,使用干净的模块化代码使其工作缓慢.

如果它是模块化的,你可以更换一两层而不必废弃整个东西.

虽然它们提供模块化,但要小心Web服务,甚至REST,因为它们往往很慢; 例如,每个连接都有很多开销.


+1.首先让它运行.然后纠正它.然后快点.*以该顺序.*

2> tadman..:

构建这种大型,复杂的应用程序,尤其是具有许多相互依赖性,特定于状态的条件以及可能需要使用不兼容语言的客户端 - 服务器分区的应用程序,无论您如何处理它,都是令人生畏的.根据我对这类其他项目的经验,无论你多么小心,你注定要在第一次尝试时失败.诀窍是将失败视为成功之路上不可避免的一步,而不是在构建应用程序时对所有小事进行大惊小怪.

第一个任务应该是让它尽可能少地编程"工作",简单地获得你正在寻找的效果,即使非常粗略,所以你可以看到它们如何组合在一起.如果你可以把这个大问题分解成一系列较小的问题来解决,你可能会发现一个元素的成功,这可能会激发解决更大或不同的问题.

一个有用的策略是保持应用程序的元素松散耦合,以避免相互依赖,除非严格要求,因此您可以交换或改进整体的部分而不需要一连串的后续更改.例如,您的网络代码可以在客户端和服务器之间传输状态更改,而无需关心状态本身的性质,但您的状态管理代码不必关心状态如何传输,只需要关注状态.

掌握应用程序的整体架构也很有用,这样您就不会迷失在杂草中.从高级角度来看,您可能希望熟悉基本的设计模式,这些模式可以帮助您将难以理解的代码组合成简单,模块化且易于构建的内容.

关于框架和语言的主题,我会说避免频繁切换.虽然探索一种新语言以了解哪些功能可能对您的特定问题有所帮助,但是如果您坚持使用一种语言可能会更有效率,即使可能难以实现某些功能,因为您可以更有效地使用它,改进你的方法,以更好地适应语言.虽然Haskell可能更适合某些问题,但即使是普通的旧PHP也可以通过足够的决心来完成同样的事情.

尝试新事物,扩大工作范围以使其"正确",建立新的功能,但是为了控制项目,你必须保持纪律.为了避免这些昂贵且分散注意力的活动,这些活动通常是客观的,只考虑到项目的总体状态,只考虑花哨或过早的飞行.

要专门回答您的问题,请在您最熟悉的框架中构建它,您的优势在哪里,并以较小的增量进行,以产生有用的结果.也许这是客户端显示引擎,或网络组件,或后端状态转换,但不管它是什么,你应该让它处于"足够好"的状态,以开始将其他组件附加到它.

解决十个小问题可能既繁琐又耗时,但它比解决一个巨大问题要容易得多.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有