【Clean Code】代码简洁之道

Java代码精简之道-10条代码精简方案 JDK7 开始新增了对需要关闭资源处理的特殊语法 try-with-resource。所有实现Closeable接口的“资源”,均可采用try-with-resource进行简化。例如 InputStream, OutputStream ,Connection, Statement, ResultSet等接口都实现了,使用 try-with-resource可以不用写finally块,编译器会帮助生成关闭资源的代码。 阅读详情

有意义的命名

名副其实
int elapsedTimeInDays // 消逝的时间,以日计
int daysSinceCreation // 自创建之日起的计算日子
int daysSinceModification // 自修改之日起计算的日子
int fileAgeInDays // 文件的创建时间
public List<Cell> getFlaggedCells()
{
	List<Cell> flaggedCells = new ArrayList<Cell>();
	for(Cell  cell in gameBoard)
	{
		if(cell.isFlagged())
		{
			flaggedCells.add(cell);
		}
		return flaggedCells;
	}
}
做有意义的区分
public static void copyChars(char[] source , char[] destination)
{
	for(int i=0 ; i<source.Length; i++)
	{
		destination[i] = source[i];
	}
}
使用读的出来的名字

错误例子

class DtaRcrd102
{
	private Date genymdhms;
	private Date modymdhms;
	private final String pszqint = "102";
}

正确例子

class Customer
{
	private DateTime generationTimestamp;
	private DateTime modificationTimestamp;
	private const String recordId ="102";
}
使用可搜索的名字
int realDaysPerIdealDay = 4;
const int WORK_DAYS_PER_WEEK = 5;
int sum = 0 ;
for( int j=0 ;j<NUMBER_OF_TASKS ;j++)
{
	int realTaskDays = taskEstimate[j]* realDaysPerIdealDay;
	int realTaskWeeks = (realdays/WORK_DAYS_PER_WEEK);
	sum+= realTaskWeeks;
} 
成员前缀少用
public class Part
{
	string decription;
	void setDescription(string description)
	{
		this.description = description;
	}
}
类名避免动词

类名和对象应该是名词或名词短语,如Customer、WikiPage、Account、AddressParser避免使用Manager、Processor、Data或Info这样的类名。类名不应该是动词。

方法名使用动词或动词短语

方法使用动词短语如:postPayment、deletePage、或Save
属性访问器、修改器和断言应该加上 get、set、和is前缀

string  name = employee.getName();
Customer.setName("Mike");
if(paycheck.isPosted())...

重载构造器时,使用描述了参数的静态工厂方法名

Complex fulcrumPoint = Complex.FromRealNumber(23.0);
通常好于
Complex fulcrumPoint = new Complex(23.0);
添加有意义的语境

前缀:firstName、lastName、street、houseNumber、city、state、和zipcode变量
加上前缀后:addrFirstName、addrLastName、addrState等等提供语境,更好的方案是 创建名为Address的类

SAP MM新手避坑指南:工厂间调拨用301还是303?手把手教你选对移动类型 本文深入解析SAP MM模块中工厂间调拨的301与303移动类型,帮助新手避开常见陷阱。通过对比一步法(301)和两步法(303+305)的核心差异、适用场景及财务影响,提供清晰的决策框架和实战技巧,确保库存调拨的准确性和效率。 阅读详情

相关推荐

ADRV902x射频评估实战:手把手教你用TES GUI生成ARM bin与JESD204C配置文件

在射频前端系统设计中,ADRV902x系列收发器凭借其宽带性能和灵活配置能力,已成为5G基站、微波回传等场景的核心器件。然而当工程师面对非官方硬件平台时,如何高效利用Transceiver Evaluation Software(TES)完成关键配置,成为项目推进的第一道门槛。本文将彻底解析脱离ADS9母板后的完整离线工作流,从参数预设到文件生成,手把手解决真实工程中的配置痛点。在Demo模式下,所有硬件状态检测都会被跳过,但配置文件生成功能完全可用。作为基础模板,因其配置最为简洁,便于后续自定义修改。

weixin_33704591的博客 429

《代码整洁之道》第2章:有意义的命名——学习笔记

软件中命名随处可见。变量、函数、参数、类、封包,源代码、目录,等等; 名副其实 不规范: int d; 规范: int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays; 避免误导 避免留下掩藏代码本意的错误线索,尽量避免使用与本意相悖的词; 经典错误: 小写字母“l”和大写字母“O”,容易看错!! int O; int a,l; if (O == 1) a = 1; e.

超级大洋葱的博客 642

【DICOM后处理】qt+vs 实现DICOM数据四视图显示

方法用于 设置 2D 视图的“向上”方向,即定义图像在屏幕坐标系中的朝向。该方法直接影响影像的显示方向,尤其在多平面重建(MPR)或非标准切面显示时至关重要。:方法用于 设置渲染窗口在屏幕上的显示位置(以像素为单位)。它控制的是 VTK 渲染窗口的左上角在屏幕坐标系中的坐标位置。DICOM四视图通常指同时显示医学影像的四个不同平面或视角,用于全面分析三维数据(如CT、MRI等)。:基于 标量值 设置不透明度(控制不同组织的显示),显示骨骼or显示高密度流体等。默认朝向原点 (0, 0, 0)

weixin_41804847的博客 1325

代码简洁之道总结

** 第一章整洁代码** 1、为什么要写整洁的代码?(为什么) 因为糟糕复杂的代码,对系统的后续维护会造成很大的麻烦,甚至需要重构,使得生产力下降 读代码与写代码的时间比例为10:1 ,读代码的时间明显比写代码时间长,所以写好整洁的代码也会提高后续开发的效率。 复杂混乱的代码,会给后续开发者带来压力,没有精力进行维护和改造糟糕代码,甚至逼迫继续造成混乱,恶性循环 2、什么才算整洁的代码?(是什么) 1)整洁的代码只做好一件事,一个方法、一个类只做自己的事(单一职责原则?避免受到四周细节干扰) 2)减少重复代

Esy_Hong 1630

深入解析UE5内存分析:从Memreport到Unreal Insights

本文深入解析了UE5内存分析的两大核心工具:Memreport与Unreal Insights。Memreport提供详细的内存快照,帮助定位UObject等资源的内存占用;而Unreal Insights则能进行实时监控与历史回溯,精准追踪内存泄漏。掌握这两款工具是优化UE5项目性能、确保大型项目稳定运行的必备技能。

lg888的博客 1006

Python异步协程爬虫优化:解决aiohttp中ServerDisconnectedError的高效策略

本文深入探讨了在Python异步协程爬虫中使用aiohttp时,如何高效解决常见的ServerDisconnectedError问题。核心策略包括全局复用ClientSession、精细配置TCPConnector连接池、实施请求重试与速率限制,从而构建稳定、高效的异步爬虫架构,有效避免服务器断开连接错误。

pz890123的博客 857

代码简洁之路——一些让你代码更加简洁和清晰的JAVA特性

以上内容都是基于JAVA 8 的版本。对于之后的JAVA新特性并没有整理进来。 平时我们开发功能时,总希望能用更简洁的代码实现业务需求,代码简洁一向都是各个开发人员追求的目标。 就像是为了减少get、set我们可以使用lombok插件,为了方便进行SQL查询而使用MyBatis-Plus增强。而随着java版本不断的更新,Java也在语言层面上提供更多便利给开发人员。 如何使自己的代码内容更加少,而可以实现的功能更多。最常提起的就是Java各个版本提供的语法糖。而关于语法糖的内容已经有足够多人去介.

大风的博客 2017

如何用Python编程实现算术割圆术?

第10章 割圆术 Python编程要点 from … import …语句 math模块的sqrt()函数 round()函数 10.1 图解九章 {:–}觚( gū ):正多边形。“六觚”即正六边形,“十二觚”即正十二边形。 图10-1 六觚、十二觚、二十四觚 提示 图10-1所示由图解九章源码中的“图解割圆术.py”自动绘制而成,我们可运行脚本文件,查看动态的绘制过程。 割六觚以...

人邮异步社区 3237

Java代码精简之道

前言 古语有云: 道为术之灵,术为道之体;以道统术,以术得道。 其中:“道”指“规律、道理、理论”,“术”指“方法、技巧、技术”。意思是:“道”是“术”的灵魂,“术”是“道”的肉体;可以用“道”来统管“术”,也可以从“术”中获得“道”。 在拜读大佬“孤尽”的文章《Code Review是苦涩但有意思的修行》时,感受最深的一句话就是:“优质的代码一定是少即是多的精兵原则”,这就是大佬的代码精简之“道”。 工匠追求“术”到极致,其实就是在寻“道”,且离悟“道”也就不远了,亦或是已经得道,这就...

数据库技术 397

自动批量安装加载cran, bioconductor和github三个平台的所有的R包

自动批量安装加载cran, bioconductor和github三个平台的所有的R包

qq_40073899的博客 559

第二节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 - Python Flask 后端开发详解(附源码)

大家好,我是cuiwin!本节内容,我们从零开始开发基于Python(Flask)的后端项目,对接Vue Vben Admin(vben5)。登录mysql数据库执行: 创建数据库。

cuiwin的专栏 2263

代码简洁之道( PHP Clean Code)

介绍 Robert C.Martin’s 的 软件工程师准则 Clean Code 同样适用于 PHP。它并不是一个编码风格指南,它指导我们用 PHP 写出具有可读性,可复用性且可分解的代码。 并非所有的准则都必须严格遵守,甚至一些已经成为普遍的约定。这仅仅作为指导方针,其中许多都是 Clean Code 作者们多年来的经验。 尽管许多开发者依旧使用 PHP 5 版本,但是这篇文章中绝大多数例子都是只能在 PHP 7.1 + 版本下运行。 文章目录**介绍****变量****使用有意义的且可读的变量名***

Millionmile的博客 1543

【WiFi】T830 MT7992 WMM测试修改操作说明

WiFi WMM(Wi-Fi Multimedia)是Wi-Fi联盟推出的一项技术,用于优化无线网络中的多媒体内容传输。WMM通过优先处理不同类型的数据流来改善网络性能,特别是在网络拥堵时。:WMM通过提供服务质量支持,确保语音、视频和其他多媒体应用在无线网络中获得优先处理。这有助于减少延迟和抖动,改善用户体验。:WMM将数据流分为四个优先级队列:语音、视频、最佳效果(Best Effort)和背景(Background)。语音和视频流通常被赋予更高的优先级,以确保它们在网络中得到及时传输。

wgl307293845的博客 1018

【Clean Code】 代码简洁之道 之 Python

逻辑分离,每个函数只做好一件事! DRY principle: Don't Repeat Yourself! @property (装饰器) Magic methods(魔法方法)

qq_37851620的博客 1253

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

php+clean+code,Clean Code PHP 代码简洁之道

介绍来自Robert C. Martin的书Clean Code的软件工程原理, 适用于PHP。这不是样式指南。这是在PHP中生产可读,可重用和可重构软件的指南。并非必须严格遵循本文中的每个原则,而且将被普遍接受的原则甚至更少。这些只是准则,仅此而已,但它们是由Clean Code的作者在多年的集体经验中整理而成的。尽管许多开发人员仍然使用PHP 5,但本文中的大多数示例仅适用于PHP 7.1+。...

weixin_42569429的博客 234

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

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

《Clean Code》 代码简洁之道

作者介绍 原文作者: Robert C. Martin, Object Mentor公司总裁,面向对象设计、模式、UML、敏捷方法学和极限编程领域的资深顾问,是《敏捷软件开发:原则、模式、与实践》的作者。翻译作者:韩磊,互联网产品与运营专家,技术书籍著译者。译著有《梦断代码》和《C#编程风格》等。(竟然不是程序员~~~) 内容概要 本书后几章主要讲了java相关的类、系统、和并发的设计介绍,...

weixin_34416754的博客 347

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

PHP 的代码简洁之道(Clean Code PHP)

PHP 的代码简洁之道(Clean Code PHP)

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 1886

Clean Code PHP:PHP代码简洁之道

最近在 GitHub 上看到了一篇很不错的文章,是关于代码编写风格和规范的,看了之后感觉收获颇丰,在这里根据我自己的理解和习惯增删改一下,以后方便拿来复习。文末有原文链接。 1、变量、方法等,名字要取得一眼就能够看出大概意思,代码可读性高一点。 //什么神仙能看得出这是当前时间的意思 $dqsj = date('Y-m-d h:i:s',time()); $currentTime = date('Y-m-d h:i:s',time()); 2、尽量不要用无意义的变量名,增加代码可读性。 .

weixin_43844995的博客 287

PHP 代码简洁之道 ( PHP Clean Code)(第一部分)

介绍 Robert C.Martin's 的 软件工程师准则Clean Code同样适用于 PHP。它并不是一个编码风格指南,它指导我们用 PHP 写出具有可读性,可复用性且可分解的代码。 并非所有的准则都必须严格遵守,甚至一些已经成为普遍的约定。这仅仅作为指导方针,其中许多都是Clean Code作者们多年来的经验。 尽管许多开发者依旧使用 PHP 5 版本,但是这篇文章中绝大多数...

weixin_43814458的博客 747

PHP 代码简洁之道 ( PHP Clean Code)

https://laravel-china.org/topics/7774/the-conciseness-of-the-php-code-php-clean-code 转载于:https://www.cnblogs.com/cxscode/p/8440511.html

weixin_30871293的博客 61

PHP 代码简洁之道 ( PHP Clean Code)(第二部分)

PHP 代码简洁之道 ( PHP Clean Code)(第一部分) 使用默认参数而不是使用短路运算或者是条件判断 不好的做法: 这是不太好的因为$breweryName可以是NULL. function createMicrobrewery($breweryName = 'Hipster Brew Co.'): void { // ... } 还算可以的做法: 这个做...

weixin_43814458的博客 269

修改昵称php代码,Clean Code PHP:PHP代码简洁之道

最近在 GitHub 上看到了一篇很不错的文章,是关于代码编写风格和规范的,看了之后感觉收获颇丰,在这里根据我自己的理解和习惯增删改一下,以后方便拿来复习。文末有原文链接。1、变量、方法等,名字要取得一眼就能够看出大概意思,代码可读性高一点。//什么神仙能看得出这是当前时间的意思$dqsj = date('Y-m-d h:i:s',time());$currentTime = date('Y-m-...

weixin_30378963的博客 227
上一篇: 【SQLite】sqlite 打开扩展名为.DB 文件
下一篇: 【SQLite Administrator】SQLite Administrator打开数据库的问题
It_sharp
博客等级 码龄10年 51粉丝 231原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值