新手问题 Ruby 语言为例,从一个想法到一个完成(不一定要求完美)的应用程序,应当遵循怎样的流程和规范?

y9info · 2023年06月10日 · 最后由 xiaox 回复于 2023年06月25日 · 911 次阅读

我是一个已经入门了一定年限的新手,非专业的,目前已经作出了一些小的程序(譬如爬虫、工作上的管理系统等),也会写一些代码,还能跑起来,对 HTML、CSS、JavaScript 也有一定的了解,也看过元编程、面向对象等书籍,感觉有一定朦胧的理解和感悟,但是发现这样一个问题:每当我有一个想法,想做一个稍微大一点、复杂一点的应用,就会发现非常茫然和混沌,写着写着就感觉自己是在瞎写,这种瞎写体现在对象的构建、架构的规划、文档的整理等等,通常是想法很美好,落地很悲惨。

举个例子,例如我想做一个围棋程序,棋盘、棋子静态的都画出来了,按照我的想法,可能要有“棋盘”、“棋子”、“棋手”、“裁判”、“记录”、“规则”等对象,但是下一步,怎么把这些对象串联起来,怎么样让他们之间互相能相互交流、传达指令(方法),能成为一个整体并进而“活”起来,却感觉很为难,不知道怎么去统筹规划。

不知道大家是怎么看待这个问题?是怎么突破想法(需求)和形成应用软件的之间的这个“鸿沟”的?怎么样的整体的去考虑,而不是一点一点的添灯油、打补丁,想到哪儿写到哪儿,写到哪儿算哪儿这种问题?

希望各位大佬、过来人能给一些指点迷津,指一些方向。

可以读读 Homeland 源代码,照着论坛的功能,看看 model 等是怎么设计的。会有提升。

你现在面临的问题,是提高「架构」设计能力,就是怎么设计 model,怎么进行状态同步(不同浏览器可以通过 websocket 来同步状态)。要突破这个难题,比较好的办法,也是比较痛苦的办法,就是阅读开源项目的代码,越复杂的越好。这样才能学到复杂产品的架构设计。

都是先写,打补丁,看着不爽就全部重写😀

问了一下 chatgpt,这是他的回答: 你遇到的这个问题并不少见,很多人在编写大型应用程序时都会遇到类似的挑战。在构建一个大型应用程序时,需要考虑很多方面,包括对象的组织、架构和交互,以及如何使它们合作,才能实现一个完整的、协调的应用程序。

针对你的围棋程序,你可以考虑以下步骤:

  1. 确定应用程序的规模和范围。你需要想清楚你的围棋程序要包含哪些功能和模块,要满足哪些需求。

  2. 确定所有的对象和对象之间的关系。你可以把所有的对象写成一个对象模型图,这样可以更好地理解它们之间的关系。你可以用类图工具来绘制一个对象模型图。

  3. 确定每个对象的属性和方法。你可以为每个对象写一个清单,包括每个对象的属性和方法,并确定每个方法的输入和输出。

  4. 设计整个应用程序的架构。你需要确定哪些模块是需要的,它们之间的依赖关系是什么,以及整个应用程序的架构是什么样子的。你可以使用一些架构模式来帮助你进行设计。

  5. 开始编写代码和测试。在编写代码之前,你需要把整个应用程序的设计文档整理好,包括对象模型图、对象属性和方法清单、应用程序架构等。这样可以确保你的程序在实现时遵循了整体的设计,减少了添灯油、打补丁的情况。

  6. 完成程序并进行优化。完成程序之后,你需要对程序进行优化,确保它能够快速高效地运行。

最后,你需要注意的是在设计过程中需要理性的评估自己的能力和时间,有些思路非常美好的想法可能在实现时需要大量的时间和精力,而有些功能则可以在后期再加入,逐步完善。

有点挑战的程序都不是一下能写好的,要容忍不完美,先做个能用的出来。如果程序是有需求的,后面随时可以重构。

如果真的想做产品,ruby 或许不是个好的选择。

咬文嚼字的地方太多,随着深入的使用,会陷入“把玩 ruby”的深渊,就像孔乙己琢磨茴香豆的茴字有几个写法。

如果不用 rails 框架,更没有必要了,是 rails 拯救了 ruby

gaicitadie 回复

不敢苟同啊,ruby 或 ROR 做 MVP 多好啊,除了低代码编程(不评价),还有比这个更适合快速形成最小可用产品的吗?

y9info 回复

注意审题,我说的是“rails 拯救了 ruby”,没有 rails,就没有 ruby 的今天

看你怎么定义完美的应用程序,有的应用产品上大成功,代码可能和屎一样;有的产品代码异常精妙,就是没人用……

willx 回复

结构清晰,逻辑合理,对象模型设置恰当就可以了。我想象的应该是从整体到局部,从宏观到微观,从粗线条到细线条勾勒出来的,而不希望整个应用是一点一点糊出来的,一点一点打补丁补出来,过了十天半个月自己也看不懂,对瀑布开发、敏捷开发、在没有整体勾勒情况下随性开发这种不是很喜欢。

y9info 回复

做应用程序还是得先把产品搞明白,定位、受众、核心功能。然后进行数据建模,想想数据库需要哪些表、每个表要什么类型、彼此之间什么关系。最后后写接口、页面就好了。

gaicitadie 回复

我很好奇,到底是谁规定的,写 Ruby 就必须咬文爵字了?

从最简单架构开发起步,然后一点点补丁。能从头开始就设计好的软件,应该不是让你迷茫的程序。事实上,补丁出来的软件在推出正式版之前,是可以按设计者的思想重构的。

也可能是脑袋里装了太多“面向对象”、“元编程”、“最佳实践”,包袱太多,内心茫然

可以看看 Getting Real,我是因为这本书入坑 Ruby 和创业的

小程序搜索“微小棋”

需要 登录 后方可回复, 如果你还没有账号请 注册新账号