细数重写大型软件失败的十大原因

读《人月神话》有感.docx 对《人月神话》初次读后的感悟,1000字左右~~~~~~~~~~~~~~~~ 专业内容不是特别多,总体对书中的观点进行了归纳 立即下载

大数据文摘出品

来源:oprea.rocks

编译:Vicky、橡树

 

本文是能够揭示技术迁移和解耦项目背后真相的系列文章之一。

 

作者在过去三年里参加过几个BIG REWRITE™、DECOUPLING™和SCALABILITY™项目,在此,作者决定分享众多类似项目失败的原因,希望此文可以帮助读者及早发现软件开发过程中的不良趋势,让大家引以为戒。

 

所以,软件开发的小伙伴们,快来看看自己中枪没有!

 

城门失火后才开始招聘

 

在项目半途扩充团队成员以求求工作效率的立刻提升,这简直是一个疯狂的想法,就好比房屋失火时才开始买保险,以希望保存已经被大火烧毁的家具一样不切实际。

 

请记住,团队中每增加一名新成员,现有团队中就会有一名老员工的工作效率降低一半,而且这一种现象从新员工开始入职时便会发生。此外,根据Tuckman的团队发展阶段理论,每当有新成员加入团队时,团队还会经历组建期(Forming)、激荡期(Storming)、规范期(Norming)和执行期(Performing)这第四个时期,甚至每次新成员的加入都会使团队使重复经历这样一发展阶段(期间有不同的矛盾冲突点需要领导者分阶段协调)!

 

没有调动起团队全体成员

 

当只有一小部分人(通常为“架构师”)来单独决定使用何种技术栈时,你的项目就会陷入困境。这就是为什么管理层最终会抱怨团队失信:架构师可能选了最好的技术栈,但如果没有整个团队的参与,再好的技术也无法实际部署,就好比身体在接受不相容器官之后的排异反应一样,而且情况只会变得更糟。

 

如果技术栈是由业务人员基于一些流行词甚至和商务伙伴那儿听来的流言所决定的,那基本上一连串诸如 “这不是我的工作”、“跟你说了这样不行”、“用另一种做好多了”或者“这是老张的错”的抱怨即将向你涌来——切忌拍脑子做决定。

 

我的建议:如果团队需要对结果负责,那么请将决策留给团队进行。切记!

 

缺乏规划

 

计划不足便意味着走向失败。

——一个比我博学的人

 

我认为这种行为通常发生在‘放飞自我型’的软件开发人员身上,他们认为写代码更像是一门艺术而非工艺,无需详细计划。不过,这种情况不止发生在开发人员身上,截止到2018年仍有一些商业人士相信他们“就差一个程序员了”,他们认为只要有了个想法和开发者,他们告诉开发者做什么他们就会做什么。

 

你不懂!

 

软件开发者可不像是铁匠。铁匠可能会面临着使用材料的质量、煤的质量或工具质量方面的不确定性,但软件开发所面临的不确定性要高得多。软件开发人员首先需要明确需求,寻找解决方案,验证解决方案,最后执行并实现——就为了一个需求,他们可能需要一次又一次地重复这个过程。

 

不坚守决定

 

专注(FOCUS)就是坚守一条道路直到成功)

——罗伯特·清崎

 

亨利·福特(福特汽车公司的建立者)的决策原则要点是切忌延迟下决策,要能够快速做出决定;而一旦做了决定,就不要再改变主意——频繁变卦会导致整个团队事倍功半并最终把任务搞砸。下定决心吧!

 

与其做个半成品,不如做好半个成品。

——Jason Fried,《Rework》

 

坚守错误的决定

 

人们在决定是否去做一件事情的时候,不仅是看这件事对自己有没有好处,而且也看过去是不是已经在这件事情上有过投入,这是典型的沉没成本谬论。因为“我们已经投入了很多xx(已经发生不可收回的支出,如时间、金钱、精力等 “沉没成本”),或者“我们一直都是这样做” 而无法放弃糟糕决定是一种无能的表现,也是一种来源于担心对决策失误做负责、并坚持继续往错误方向前进的危险行为。

 

这注定会将会带领团队陷入一次死亡之旅。

 

陈词滥调的鸡汤时间:

请记住,无论你在错误的道路上走多远都要回头;即使你选择了正确的道路,如果你站在那儿什么都不做,你最终都会被超过。

 

缺乏人员规划

 

如果没有人员规划,核心人员最后会偏离他们的原始职责而去处理一些无计划、无法预料且最无关紧要的工作。如果团队人员编制已满,那么还是要对参与项目的应有人数进行一些现实的规划。如果项目计划是迁移一个成熟的应用,那么魔数(人们拍脑子想出的数大多为3/4/7)在这里可不管用,随便挑个数字都不会让你更接近你的目标。

 

逃避心态

 

逃避心理会让你蒙蔽双眼,假装什么事情都进展顺利;你会逃避一些显而易见的事情,即使它们就在眼前;它还让你忽略了两个星期后的项目DDL,而你其实已经落后两个月的工作量了。尽早迎难而上,软件开发不应该像潘普洛纳奔牛节一样——不要去躲避那些公牛,因为它们最终会赶上你并把你‘顶翻’。

 

如果你真的有所顾虑,就让你的开发人员提出问题,这些开发员可擅长抱怨那些最微小的变化了。如果你培养了一种公平、公正且人人都有机会发言的开放性企业文化,无论问题有多“敏感”或是谁导致了这个问题,你的开发人员都会声嘶力竭地向你提问,尖叫着跟你说‘天都要塌了’。

 

计划太远

 

当只有两个月的路线清晰度时却计划了一年的工作量。

 

一年的计划只是个幻想。你可能年初时觉得你什么都安排好了,但等情人节再看看吧——你会开始希望你的计划更“灵活”一些,团队更“适应”一些了。为什么就不给自己省些麻烦,就只做一季度的计划呢?在作者看来,一季度是计划的最佳时间。此外,设定季度目标意味着你更有可能实现这些目标,因为你将处理的不确定性更少,并且你的目标会更加现实。

 

试着在项目管理中进行一整年的工作规划,并像你计划建造房屋一样规划软件,这完全就是一种浪费。

 

如果飓风来袭了呢?

 

如果伊隆·马斯克决定接管互联网并创建一支僵尸机器人军队呢?

如果你部署产品的唯一选择,是将你的应用程序装入一个外接硬盘并带到亚马逊的数据中心呢?

 

如果为了做到这一点你必须和马斯克的僵尸机器人军队搏斗呢?

 

这些都是合情合理的问题。同样合理的还有“你认为它要花多长时间?”或者“我们应该在这个用户故事中加多少个故事点呢?”。

 

你不是在建房子。房屋设计很容易,因为一切都已“完成”,你只需挖洞添点“胶水”,然后把房屋的每个部分放在一起就搞定了。但使用软件时,你甚至得先创造个想要挖洞的位置,然后才能进行后续操作。

 

房屋建造和软件开发的唯一相似处是在术语上,应用实际概念时却大相径庭。你不会在建房时中采用迭代策略,否则你就是在建一座新房,而且只有在拆掉旧房的情况下你才能建造一座新房子,期间所需

 

不要再因为“你需要交付了”或者“你在获投可以代码重构”这些原因而去构建那些非模块化且架构得乱七八糟的破烂软件了,后患无穷!

 

我不是说单片软件(非模块化)很糟糕,但一个模块化的整体结构在短期内比你找到的任何基于微集成服务的无价值工作运转得更好。但你构建之前要多考虑,使用个合适的前端框架,选个符合你需要的UI库并彻底对他们彻底了解。

 

错误衡量

 

我不打算谈论具体的测量方法,毕竟这个必须由读者自行决定。无论那个程序开发速度还是产品推出时间,你应该客观地评估你的当前情况,并基于此找出你需要衡量的标准。

 

在此举一个有关错误衡量的个人例子。

 

我们假设我的目标是增加我的电子邮件订阅者数量,那么我就不应该太关注网站访客量。如果我开始疯狂地关注后者,那么几个月后我就会觉得我已经非常受欢迎了,并且我就会像已经拥有更多的电子邮件订阅者一样生活——大多数崇拜幻想世界故事的人都是这样生活的。但反过来,我其实也可以查看我的订阅者列表,从而注意到没有任何订阅者数的进步,接着会查看访客量,结果发现网站上其实很多人浏览但没有订阅,从而便可以继续探求浏览者不订阅的原因。

 

过程太过僵硬

 

据我的经验,发生这种情况是因为人们过于死守交付流程,但实际的关注点应该在于交付的内容,许多使用SCRUM(敏捷开发)的团队也在抱怨它太死板了。在我看来它的确有些僵硬,但不乏一些主观性的偏见存在。其实客观来讲,任何敏捷的开发流程都具有很强的适应性和灵活性,但我们的天性就只是照搬书中的所有内容(特别是当我们被规则驯化后),从而使得一切都看起来非常僵硬。

 

正如Vasco Duarte在他的作品《No Estimates》中所说:“建造软件就跟疏通浴室管道一样——为了把厕所修好你还得再建三座房子。”软件开发的本质就是当你准备好解决一个问题的途中还发现了其他三个问题需要解决。在Quora上有一个很好的类比,拥有近三十年软件开发工作经验的Channing Walton借用“泡茶”为例形象阐述了软件开发过程的艰辛。

 

Q:我该如何向一个非软件从业者解释软件开发过程有多复杂、多耗时、多易错?

A:让他们描述制作一杯茶所需的步骤,他们可能会说:

    1.烧水

    2.把茶放进锅里

    3.将水煮沸后倒入锅中

    4.等5分钟

    5.把茶倒进杯子里

    6.往杯子里加牛奶

    7.喝掉

 

接下来便是最有趣的部分,你需要开始继续问这些问题:

烧水?那么:

    水来自哪里?

    水壶在哪里?

    你怎么把水倒进水壶里?

    你怎么知道多少水放入水壶里?

    没有水/水壶/电的时候怎么办?

    如果填满传感器出现故障(溢出)怎么办?

    如果沸腾传感器出现故障怎么办?

 

把茶放进锅里?那么:

    锅是在哪里,如果没有锅怎么办?我们应该在煮沸之前想到这个问题吗?

    茶在哪里?是哪一种茶?我们是否应该先问一下,如果我们没有合适的茶该不该继续这么做?以及关于溢出和传感器的类似问题怎么办?

 

倒开水?那么:

    你确定它在沸腾吗?怎么能确保浇注的机器从水壶中得到正确的“完成”信号?

    你怎么确定机器倒酒器知道锅的位置?

    如果在倾倒期间锅翻倒怎么办?

 

诸如此类的问题,你可以继续问上几个小时,他们会感到无聊并说:“这种程度的细节考量是愚蠢的!”此时你的目的就达到了,你只需要微笑点头说道:“是的,但整个过程的确就是这样。”

 

相关报道:

https://oprea.rocks/blog/five-reasons-big-software-rewrites-fail/

 

软件项目管理——失败案例分析 软件项目管理——失败案例分析,IBM360系列的经验与教训 立即下载

相关推荐

《人月神话》读后感

《人月神话》是一本对于软件开发和项目经理职业有着启发式的重要作用,这是本人的一些读后感。

大学的我对《人月神话》读后感 近两千字

《人月神话》读后感 作者:mizuhokaga 时间:2021/06/10 《人月神话》大一的我早已在图书馆的二楼见过它的大名,可惜当时年少无知,光看名字和封面觉得像一本放错了展馆的故事书,最终没有打开翻阅。直到学习了《软件工程》这门课才知晓这本书在软件工程里的地位,这才随心翻看了一遍。我就我看过的内容,写写自己的思绪,记录一下自己的看法。以章节为序。 第一章中,“编程系统产品(Programming Systems Product)开发的工作量是供个人使用的、独立开发的构件程序的九倍。我估计软件构件产

mizuhokaga的博客 3160

《人月神话》读后感。。。好东西

对软件工程犀利的认识:一个整洁、优雅的变成产品必须向它的每位用户提供一个条理分明的概念模型,这个模型描述了应用,实现应用的方法以及用来指明操作和各种参数的用户界面使用策略。概念的完整性是易用性中最重要的因素。而结构师,则是负责保证产品所有方面的概念完整性的,结构师设计的是能够让用户理解产品概念的模型,这包括所有的功能的详细说明以及调用和控制的方法。

《人月神话》之读后感想

读了Brooks的《人月神话》一书,很有感触,记录下自己印象深刻的观点并结合自己的职场经验分析一下。 0. 人月神话 在阅读《人月神话》之前,只理解“人月”是指项目时间安排的单位,没太注意“神话”的含义。通读了全文后,才懂了其中的见解:Brooks认为,项目开发中,人和月是不能互换的,人和月互换就是个神话。1个人5个月的项目,5个人在一个月内一是完不成的,这个观点基于的理由是:有些任...

szkbsgy的专栏 1210

Unity 升级引擎版本后构建报错:script class layout is incompatible between the editor and the player

Unity升级引擎版本后,项目报错:script class layout is incompatible between the editor and the player。

学习与分享 592

yolov5 部署jetson nano(通用) 保姆级教学

Jetson nano从配置环境到yolov5成功推理检测全过程 文章目录Jetson nano从配置环境到yolov5成功推理检测全过程一、烧录镜像二、配置环境并成功推理1.更新系统和包2、配置环境2.1 配置CUDA2.2 修改Nano板的显存1.打开终端输入:2.修改nvzramconfig.sh文件:3.重启:4.终端输入:3、安装archiconda(也就是jetson nano板上的anaconda)1.下载地址:2.安装:3.测试conda:4.创建运行yolov5的虚拟环境:5.在conda

weixin_44312422的博客 3万+

读《人月神话》的一些感受

最近在读《人月神话》,这是一本成书于 1975 年的关于软件工程的书,考虑到计算机领域的飞速发展,这本书真的可以算是计算机历史上洪荒时代的作品了,然而虽然时代久远,但是这本书仍然被无数人推荐必读,可谓畅销数十年。既然如此,作为半路出家的软件开发工程师,我当然要拜读一下了。

阵雨的博客 1296

Cadence16.6安装教程

如需安装所需的软件,请到文章末尾处查看 安装步骤: 安装前先关闭杀毒软件和360卫士,注意安装路径不能有中文,安装包路径也不要有中文。 试装系统:win10 64bit 1.解压安装包(共5个压缩包,每个都要解压) 2.以管理员身份运行安装程序。 3.选择License Manager。 4.点击NEXT。 5.选择I accept,然后点击NEXT。 6.选择License Manage...

谢谢关注“小鱼教你模数电”,各平台同号 8万+

关于《人月神话》的读后感

关于《人月神话》的读后感 基本情况: 书名:人月神话 作者:布鲁克斯(FrederickP.Brooks.Jr.) 页数:369 全书字数:316000 出版社:清华大学出版社 出版日期:2002年11月 阅读日期:2020年9月 一、主要内容: 针对每个章节的内容简单地进行了一些总结: 1.焦油坑 将大型的系统开发比喻成史前时代的焦油坑,在开发中不断出现的问题犹如剪不断,理还乱的毛线团,令人在其中痛苦挣扎,而又当从中挣脱一部分时,其中的乐趣远大于苦恼。这本书的价值也就在于提供一些开发的指导意见,

@ZhengLan的博客 1059

初学树莓派——(九)DHT11数据传入ONENET

目录 前言 DHT11实现本地温湿度监测 DHT11.py 接线图 效果图 温湿度数据上传至ONENET 新建产品 新建设备 ONENET.py 测试 Shell脚本配置 效果图 前言 本文分部分实现温湿度上传至OneNet云平台,本地数据监测,数据上传 新建一个文件夹,文件夹内包含DHT11.py、ONENET.py、tmp_data.txt、hum_data.txt DHT11实现本地温湿度监测 DHT11.py import RPi.GPIO as GPIO

会点灯的大力水手的博客 2611

【STM32项目】基于stm32智能鱼缸控制系统的设计与实现(完整工程资料源码)

随着现代化经济的快速发展,物质条件富足的人开始追求精神富足,越来越多的人通过饲养观赏鱼来充实生活、释放压力,但并非所有饲养者都有时间和经验来管理好鱼缸。一种由单片机控制,可实时检测和调节鱼缸环境,可把鱼缸环境实时反映给用户并能被用户远程操控的系统,可以解决养鱼成活率低、耗费时间和精力、参与感不强等诸多难题。

嵌入式技术开发 7351

软件项目总结中的经验总结

篇一:软件项目失败经验总结 项目失败经验总结 1、在项目初期没有进行风险的管理探讨,项目远景定义和功能集合的详细定义。 当项目走了很远,出现很多问题的时候,领导总算想起要做一个边界定义,但这个时候已经迟了,项目已经变得不可控制。 经验总结: 由于客户一般对计算机不是很了解,和他们交流是用软件行业的专业俗术语,他们根本就不懂,如果用文档也很难把需求写得那么明白,而且文档很多的话,...

di80167的博客 3023

【Arduino 动手做】六舵机自平衡 Rotary Stewart 平台

《Arduino六舵机自平衡Rotary Stewart平台项目》 该项目展示了一个基于Arduino的六自由度Rotary Stewart平台,通过六个舵机实现动态平衡控制。设计采用激光切割框架和TAMIYA 70171套件,提供详细组装指南和开源固件(GitHub可获取)。开发者丹·罗耶分享了3D打印文件、视频演示及运动学优化需求,强调该平台可扩展应用于游戏控制(如Kerbal Space Program)或教育领域。项目链接包含完整资源包,鼓励用户参与改进并分享创作成果。该案例体现了Arduino在机

雕爷学编程 1088

细数编程能力的四重境界

无论你是干什么的,无论你在哪个行业,都必须面对一个事实:成功的人必然走过艰辛的路,必须一步一步踏踏实实前进。对程序员而言也一样,刚接触编程的程序员非常渴望精通一门编程语言,有点编程经验的程序员想掌握架构设计,有多年工作经历的程序员则想成为大师级人物,总之编程能力不是一蹴而就的,我将其分为四个阶段,看看你现在处于哪个阶段。 第一阶段:无意识,无能力 John是一位年轻的Web开发人员,他...

弧形弹道 147

华为eNSP镜像包全集下载,包含CE6800、CE12800、NE系列等!

你好,这里是网络技术联盟站。昨天给大家介绍了win11、10下安装eNSP最新系列(1.3.00)并完美运行,附下载。从文章发布到发文前,一直有朋友想让瑞哥提供一下华为ENSP镜像包,今天安排!eNSP安装包、以及eNSP中所需要的镜像包(设备包)(CE、CX、NE40E、NE5000E、NE9000、USG)例如:导入一个USG设备包,eNSP中的USG5500和USG6000V都是可以启动的。如果你的报错“40”的话,那么打开Oracle VM VirtualBox这个虚拟机,删除对应报错的虚拟机,然后

网络技术联盟站 3万+

【教程4>第6章>第26节】基于FPGA的MMSE信道估计与均衡系统实现与整体测试,并对比LS信道估计

通过前面几个章节的学习,我们完成了MMSE信道估计和均衡系统。为了进一步验证MMSE信道估计的性能,我们在系统的最后,增加一个信道估计误差计算程序。由于MMSE信道估计,其主要优势在SNR较小时提现,因此测试对比时,我们在testbench中,将SNR设置为2db。然后m值,我们不考虑一个固定值,而是一直累加,直到所设置的仿真时间结束。通过对比可以看到,MMSE信道估计性能优于LS信道估计。这样方便FPGA中的误差计算。

FPGA/MATLAB学习教程/源码/项目合作开发 1598

java feign 掉接口 404_那些年我学Java踩过的坑

学Java的一路简直就是踩坑的一路,来来来让我们细数一下我这些年的血泪史菜鸟阶段,几乎天天在雷上度过。。。第一个:数据库表字段不能用sql字段,会报500错误。比如order 在select 时就会报错。第二个:在用int 类型做查询操作Controller层要写Integer类型,不然会报“”Request processing failed; nested exception is java....

weixin_39737111的博客 276

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

架构师日记-聊聊开发必掌握的那些实践技能 | 京东云技术团队

本文总结了软件开发过程中经常用到的基础常识,分为基础篇和实践篇两个篇章,其中基础篇中着重讲述了类,方法,变量的命名规范以及代码注释好坏的评判标准。实践篇中从类,方法以及对象三个层面分析了常见的技术概念和落地实践,希望这些常识能够为读者带来一些思考和帮助。

JDDTechTalk的博客 375

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

架构师日记-聊聊开发必掌握的那些实践技能

一、引言尽管软件开发一直致力于追求高效、可读性强、易于维护的特性,但这些特性却像是一个不可能三角,相互交织,此消彼长。就像底层语言(如汇编和C语言)能够保持高效的运行性能,但在可读性和维护性方面却存在短板和劣势;而高级语言(如Java和Python)在可读性和可维护性方面表现出色,但在执行效率方面却存在不足。构建语言生态的优势,弥补其存在短板,始终是编程语言的一个演进方向。不同编程语言,拥有不同的...

京东科技开发者 182

java开发技巧

尽管软件开发一直致力于追求高效、可读性强、易于维护的特性,但这些特性却像是一个不可能三角,相互交织,此消彼长。就像底层语言(如汇编和C语言)能够保持高效的运行性能,但在可读性和维护性方面却存在短板和劣势;而高级语言(如Java和Python)在可读性和可维护性方面表现出色,但在执行效率方面却存在不足。构建语言生态的优势,弥补其存在短板,始终是编程语言的一个演进方向。不同编程语言,拥有不同的特性和规约,下面就以JAVA语言为例,细数那些开发过程中容易被人忽略,但必须掌握的知识点和实践技能。

weixin_43489232的博客 220

python-扫雷小游戏源码(使用tkinter模块)

Python-利用tkinter模块实现扫雷小游戏(含代码)开发意图游戏UI使用库注意事项代码示例感言 开发意图 忽然想起来扫雷小游戏,感觉逻辑应该挺简单的,因此自己尝试学习写代码实现了这个功能,虽然一些功能还是有问题,但是勉强还是能玩的。 细数当前明显的不足如下: UI不好看(自己图片自己画的,很丑陋,懒得细琢磨了) 当踩到周围没有雷的方块时没有办法自动将附近的空白方块打开(这个很尴尬,导致每...

qq_16149631的博客 5140

python采用强制自动缩进使得代码具有极佳的可读性_Python“八宗罪”?你怎么看...

来源:机器之心本文作者有一群 geek 朋友,经常一起讨论技术话题,有时候也会谈到编程语言。「I hate Python」,作者表示。他对 Python 厌恶至极。即使有现成的 Python 代码可用,他也宁愿用 C 语言重写。为了系统地吐槽 Python,作者专门写了这篇博客,细数 Python 的「八宗罪」。这个话题已经在 Hacker News 上引发了热烈的讨论,感兴趣的读者可以...

weixin_33171058的博客 240

Python「八宗罪」

选自hackerfactor,作者:Neal Krawetz,机器之心编译。 本文作者有一群 geek 朋友,经常一起讨论技术话题,有时候也会谈到编程语言。「I hate Python」,作者表示。他对 Python 厌恶至极。即使有现成的 Python 代码可用,他也宁愿用 C 语言重写。为了系统地吐槽 Python,作者专门写了这篇博客,细数 Python 的「八宗罪」。 这个话题已经在 ...

python1212的博客 234

那些年我学Java踩过的坑

学Java的一路简直就是踩坑的一路,来来来让我们细数一下我这些年的血泪史 菜鸟阶段,几乎天天在雷上度过。。。 第一个:数据库表字段不能用sql字段,会报500错误。比如order 在select 时就会报错。 第二个:在用int 类型做查询操作Controller层要写Integer类型,不然会报“” Request processing failed; nested exception is...

ZYQZXF的博客 505
上一篇: Netflix一位数据科学家剪出了上百部爱情片,想教AI认识“亲吻” | 国际接吻日
下一篇: 治愈呼噜娃!自适应算法“吸音”抱枕,不同鼾声一网打尽
BigDataDigest
博客等级 码龄9年 448粉丝 500原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值