java vb 速度_使用VB.NET加快代码开发速度
以前在学校时,编写代码都是使用C#,习惯了C#的代码习惯,等工作后由于工作需要逐渐的开始采用了VB.NET开发项目,渐渐地喜欢上了VB.NET,现在我就罗列一些VB.NET加速代码开发的方法。
一、智能感知
做.NET开发的许多人都知道作为微软.NET中2大语言VB.NET和C#,VB.NET在智能感知上比C#强上许多,
1、自动补完,在VB.NET中如果输入VB.NET关键字,当敲击enter后,VS会自动帮助你补完剩余的代码
比如:输入try等后敲击enter,VB.NET会自动生成
Try
Catch ex As Exception
End Try
这样程序员就可以不必再输入catch代码,可以直接编写业务逻辑代码(VB.NET中的关键字都会有类似效果,大家有兴趣可以自己尝试)
当然在C#中也可以通过Snippets来完成,但是C#的Snippets大大少于VB.NET,从下图中就可以看出
VB.NET
C#
2、代码自动格式化
在VB.NET中只要敲击enter就会自动对当前文档格式化,无需像C#中需要手动Ctrl+K,Ctrl+F(虽然在C#中写完一段代码VS也会自动格式化但是效果远远比不上VB.NET),这种自动格式化,减少了在书写代码过程中的许多工作量,而且如果碰上一个不喜欢格式化代码的人,VB.NET可以自动帮助格式化,这样后面的人来阅读代码会更加方便。
3、智能感知
在.NET3.5中,添加了linq,我们会经常书写这样的代码,如:
VB.NET
C#
从上图我们可以清楚的看到,VB.NET可以从LINQ语句中自动推断出linq变量的类型,而C#却不行,当我们在书写复杂的LINQ语句时,这种提示是很有用的,而且在foreach等遍历对象时,VB.NET基本上都能自动推断出变量的类型,但是C#不行必须程序员手动的给变量指定类型。
同时,在VB.NET中,还有个好处就是不区分大小写,例如:我们在做ASP.NET开发时由于某些情况下是没有智能感知提示的所以经常需要靠记忆力来书写代码,像在页面中写javascript书写:
var txt=document.getElementById(“”);
来获取文本框的客户端ID,在C#中必须书写Text1.ClientID否则会报错,而VB.NET则可以写成Text1.ClientId。
又比如,在C#编写过程中我们都会要书写using System;来引用命名空间,但是此时如果你直接写using system.这时按“.”智能提示将不会有任何提示,应为system的首字母为小写,必须要将原有的system删除,书写正确的首字母大写的System才行,这种智能感知无法正常提示的情况在C#很常见(当然在VS2010中已经被很好的优化了),而VB.NET就不会出现这样的问题,你在书写的每一步无论你书写大小都能被正确的识别
当然这种智能感知还体现在VB.NET的许多方面。
4、命名空间导入
在C#开发中有件很令我痛苦的就是命名空间导入,每当我新建一个类时我可能就需要重复导入命名空间,这样一个项目下来上百个类得重复导入很多命名空间。而VB.NET则很好的解决了这个问题,当你新建一个VB.NET类或模块,会发现这个类很干净:
Public Class A
End Class
仅仅只有类的定义,没有像C#那样默认导入了几个必备的命名空间,如System,System.Text等,这是因为VB.NET在建立项目的同时已经帮助你引用好了,winform项目可以通过查看项目属性引用中查看 在asp.net可以在web.config中查看到:
同时你也可以在这引用一些项目共用的命名空间。
二、特性语法,与C#之对比
介绍了VB.NET的一些智能感知特性后,现在我就对VB.NET在特性语法上和C#进行比较
1、代码结尾
VB.NET有个最大的好处,在默认情况下VB.NET换行则表示一行代码的结束,不必想C#一样书写“;”来表示,从某种程度上来说可以稍微提高一些代码的编写速度
2、匿名类型
.NET3.0开始,C#引入了var关键字,这样方便了程序员在定义变量时的麻烦,相对应的VB.NET也有Dim关键字。
在C#中如果要建立一个匿名类型:
var people = new { name = "kyo", age = 22 };
VB.NET的写法:
Dim people = New With { .name="kyo", .age = 22 }
3、XML
在VB.NET9.0发布的时候,VB.NET的XML编写方式使程序员们眼前一亮,在程序中也可以像普通编写XML一样简单,并且可以以编程的形式进行XML操作,我们现在来对比下VB.NET和C#书写XML的方式
VB.NET:
Dim xml =
kyo
22
C#:
var xml = new XElement("peoples",
new XElement("people",
new XElement("name","kyo"),
new XElement("age",22))
);
可以看出VB.NET的书写方式完整的实现了XML的结构,一眼就能看明白,而C#则需要靠良好的格式化才能看的出来。
再看一段MSDN中的VB.NET的XML操作例子:
' Place Imports statements at the top of your program.
Imports
Module Sample1
Sub SampleTransform()
' Create test by using a global XML namespace prefix.
Dim contact = _
Patrick Hines
206-555-0144
425-555-0145
Dim phoneTypes = _
_
Select _
%>
Console.WriteLine(phoneTypes)
End Sub
End Module
这段代码实现的效果是查询输出contact中所有的phone的类型。具体的原理大家可以查看MSDN,MSDN中已经写的很详细了。
4、可选参数,可选实参
在现有的VB.NET已经拥有了可选参数,可选实参这2个特性,而C#在4.0才加入:
VB.NET:
可选参数:
Public Sub SubA(ByVal a As String, Optional ByVal b As Integer = 0)
a = b.ToString()
SubA("kyo")
SubA("kyo", 2)
End Sub
可选实参:
SubA(a:="kyo", b:=2)
C#:
可选参数:
public void A(string a, int b = 0)
{
A(“kyo”);
A(“kyo”,2);
}
可选实参:
A(a:"kyo",b:2);
5、语法可读性
在对比了C#和VB.NET的关键字,已经在日常的使用中,我觉得VB.NET的语法更加接近人类的自然语言,可读性也比较强。大家可以从MSDN中对比下VB.NET和C#的关键字,会发现VB.NET的关键字虽然啰嗦了点,但是更加能让人读懂,具体的比较,大家可以从这里查看VB.NET关键字和C#关键字
三、VB.NET的不足
说了那么多VB.NET的好处,现在来说说VB.NET的不足,而且这些不足我个人认为也是比较令人不舒服的:
1、代码着色
C#的代码着色在看的时候令人非常的舒服,各种类型,各种关键字都是用不同的颜色给区分出来,让人一看就知道什么是什么,而VB.NET这点就做的比较糟糕了,整个代码就3种颜色(除去XML编程的颜色)关键字的蓝色,普通代码的黑色和字符串的红色
VB.NET:
C#:
大家对比下就能看出了吧!
2、代码结构
在C#中代码的开始结束都是使用“{}”来表示,看上去非常的简洁,而VB.NET却比较啰嗦了,比如一个方法是sub开始,end sub结束,少的时候还可以接受一旦多了整个代码就感觉太啰嗦了(幸好VB.NET的自动格式化做的非常好)
VB.NET还有个硬伤就是#region代码折叠,在C#中#region可以出现在任何地方,可以把任何需要折叠的代码折叠起来可以在方法体内,也可以在方法外,而VB.NET不行,#region必须是在方法外,只能将方法折叠,不能将方法内的代码折叠,这样如果一个方法体内的代码比较长,这样就无法进行分段折叠了。
四、VB.NET 10.0
VB.NET10.0已经发布了,这次的10改动也是非常的巨大,融合了C#许多3.0的优点,让人心动不已。
1、自动属性
在10.0以前,VB.NET写属性都非常费劲,例如:
Private newPropertyValue As String
Public Property NewProperty() As String
Get
Return newPropertyValue
End Get
Set(ByVal value As String)
newPropertyValue = value
End Set
End Property
虽然可以通过来Snippets来减少输入,但是还是比较麻烦,但是在10.0中引入了自动属性,和C#3.0一样,只需1行就可以完成:
Public Property A As String = ""
2、隐式换行
书写VB.NET有个比较痛苦的事就是,因为VB.NET是以回车符来表示一行代码结束,但是有时代码太长需要分几行来写以方便阅读,在每行的结尾都需要写“_”来表示换行,这样有时忘写就会报错,但是在10.0中取消了这个该死的“_”,可以直接换行,这样书写代码时就无需考虑换行因素了。
3、局部方法、局部函数
.NET3.0中,引入了lambda表达式,C#可以通过“=>”来表示,而VB.NET则需要通过function(x) code来表示,这样就大大的局限了VB.NET的lambda表达式,因为Function(x)表示一个函数必须有返回值,这样Action在VB.NET中就无法通过lambda表达式使用。而10.0中则新增了局部方法、局部函数:
dim action=sub()
end sub
dim func=function()
end function
这样VB.NET的lambda表达式功能才算真正的完善
至此本文就已经结束了,虽然只是介绍了一些VB.NET的基本一些特点,还有很多很多VB.NET有特色的东西没讲到。比如My关键字、隐式转换、CInt(CXX)转换,Microsoft.VisualBasic命名空间等等,具体的还是要大家在日常的使用中去研究,希望大家能真正喜欢上VB.NET。
本文如有不好请见谅,因为本人还是一个菜鸟。
java vb 速度_使用VB.NET加快代码开发速度相关推荐
- 使用VB.NET加快代码开发速度
以前在学校时,编写代码都是使用C#,习惯了C#的代码习惯,等工作后由于工作需要逐渐的开始采用了VB.NET开发项目,渐渐地喜欢上了VB.NET,现在我就罗列一些VB.NET加速代码开发的方法. 一.智 ...
- echarts python源码_基于Echarts的微代码开发平台SmartChart, 免费开源使用
A platform that Connect Data to Echarts. 简介 SmartChart基于Echarts/Django的微代码开发平台,适用于任何WEB项目 简单, 敏捷, 高效 ...
- 应用vb编程_用VB编程来解决实际生活问题
今天,我们共同来学习用VB编程开发的实际应用软件--个人所得税快速计算程序. 个人所得税是调整征税机关与自然人之间在个人所得税的征纳与管理过程中所发生的社会关系的法律规范的总称. 目前最新的起征点为每 ...
- mysql500万数据查询速度_是什么影响了数据库查询速度
一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查 ...
- php和nodejs和java的区别_讨论PHP和Node.js开发之间有什么区别
在很长一段时刻内,决定在Node.js和PHP之间进行挑选是一件很费事的工作,但关于后端程序员来说,这一直很费事,但它从未影响过开发人员.可是工作很快就发生了改变,现在开发人员有必要挑选其中之一.No ...
- java单行字符_十个便捷的单行代码编程技巧
1.对列表/数组中的每个元素都乘以2// www.1b23.com Range是半开区间 int [] ia = range(1, 10).map(i -> i * 2).toArray(); ...
- 百一测评java基础答案_百一测评——《Web应用开发》选择题(含参考答案)—JavaEE基础...
<百一测评--<Web应用开发>选择题(含参考答案)-JavaEE基础>由会员分享,可在线阅读,更多相关<百一测评--<Web应用开发>选择题(含参考答案)- ...
- java proguard 使用_使用proguard混淆java9代码
序 本文主要研究一下如何使用proguard混淆java9代码 maven com.github.wvengen proguard-maven-plugin package proguard 6.0. ...
- java类库支持_第十二章:开发支持类库
UUID类 UUID(since 1.5 java.util.UUID)是一种生成无重复字符串的程序类,这种程序类的主要功能是根据时间戳实现一个自动的无重复的字符串定义.所谓的无重复只出现概率很低 ...
最新文章
- Node.Js 学习随笔2
- freemaker模板引擎使用详解
- oracle 查看库表状态
- 做一个好的搜索引擎有多难
- JSON与Delphi Object的互换
- [转载] 学Python的笔记(在网上自学的总结)
- JDK 8.0 新特性——接口默认方法与静态方法
- mysql union 别名报错_浅析mysqlunion和unionall
- Java国密算法加密
- DG导入mysql依赖包_mysql 命令行快速导出数据,导入数据
- 复制整个文件夹下的文件(无限递归复制子文件夹)
- 2021年全球及中国区块链投融资及技术专利情况:中国区块链相关注册企业达到9.36万余家,新增专利15985项 [图]
- [PTA]实验5-6 使用函数判断完全平方数
- steamcommunity 本地 443端口被占用解决方案
- VC++ excel 写入与写出数据
- JPBC实现非对称双线性配对:typeF型曲线
- warning C4183: ‘Cricle‘: member function definition looks like a ctor, but name does not match enclo
- GO项目性能优化大赏
- 计算机页面添加文字水印在哪,怎么添加水印-Word小技巧-快速添加高大上的水印...
- java中extends用法_java中extends和implements的区别,怎么用?