Je suis essentiellement une boutique Java, mais j'ai décidé d'écrire un programme sur VB.net pour un certain projet. Je pensais que VB.net était Bimyo, mais je pensais que ce n'était pas très différent de Java, alors j'ai écrit un article sur la différence sous forme de mémorandum. C'est un soi-disant poème. Si vous avez l'opportunité de devenir programmeur VB.net dans une boutique Java, j'espère que cela vous aidera un peu.
Je voudrais expliquer la différence avec VB.net du point de vue d'une boutique Java. Si vous voulez voir le code depuis le début, veuillez vous référer à [3. Sample](# 3-Sample).
VB.net est un langage orienté objet car il fait partie du .Net Framework.
Les gens de VB6 semblent l'utiliser moins souvent, mais vous pouvez également définir Classe
sur VB.net.
Lors de son utilisation, new
est utilisé pour créer un objet.
Les deux sont basés sur CamelCase
, mais VB.net est également basé sur ʻUpperCamelCasepour les méthodes et les propriétés. Dans une boutique Java, il est difficile de faire la différence avec
Class` au premier coup d'œil, mais c'est ce que c'est.
VB.net a également le concept d'emballage. Placez-le dans un bloc appelé «Namespace». Les packages Java sont liés à la structure des répertoires, mais «Namespace» de VB.net n'a rien à voir avec la structure des répertoires.
De plus, si vous utilisez les noms avec le nom Class
et le nom Namespace
, une erreur se produira dans la construction.
Java a un package inférieur et le nom de Class
est ʻUpperCamelCase`, donc il peut être jugé, mais je pense que VB.net ne peut pas être jugé par la même convention de dénomination. (peut être)
«Import» de Java spécifie «Classe» (à l'exclusion des importations statiques), tandis que «Import» de VB.net spécifie «Espace de noms».
Cela semble étrange car Java ne spécifie pas de package pour ʻimport. (. * Peut être vu visuellement) Même dans VB.net, lorsque vous définissez un alias, spécifiez la
Classe` à la fin, mais dans ce cas, la description est différente, vous pouvez donc la voir visuellement.
Dans VB.net, la méthode de définition d'une méthode diffère selon la présence ou l'absence d'une valeur de retour. S'il n'y a pas de valeur de retour, c'est-à-dire s'il est «void» en Java, il est défini comme «Sub» (sous-section).
S'il y a une valeur de retour, VB.net la définit comme une Fonction
.
Si vous souhaitez modifier la présence ou l'absence de la valeur de retour, VB.net est un peu en désordre.
Lors de l'implémentation d'une petite fonction utilitaire en Java, je pense que c'est généralement une méthode «statique». Dans VB.net, ce n'est pas «statique» mais «partagé».
VB.net a également une fonction équivalente aux annotations Java. Voilà l'attribut. La fonction de base est de fournir des attributs pour la vérification d'entrée qui sont presque les mêmes que ceux de Java "Bean Validation". Pour plus de détails, reportez-vous à Microsoft Page.
Je pense que les génériques (, les paramètres de type) sont une fonction que vous voyez souvent dans Java récent. Bien sûr, VB.net a également cette fonctionnalité comme spécification de langage.
À titre d'exemple, je voudrais réaliser la même chose que la vérification d'entrée en utilisant la `` validation de bean '' de Java sur VB.net.
Depuis que je l'ai réglé sur Sub
sans valeur de retour, la Fonction
mentionnée ci-dessus n'apparaît pas, mais j'ai essayé de tout emballer.
Comme pour «Bean Validation», la vérification des entrées à l'aide d'attributs est simple, facile et pratique.
User.vb
Imports System.ComponentModel.DataAnnotations
Namespace Com.Example.Demo
Public Class User
<Display(Name:="Identifiant d'utilisateur")> _
<Required(ErrorMessage := "{0}Est une entrée obligatoire.")> _
Public Property UserId As String
<Display(Name:="Nom")> _
<Required(ErrorMessage := "{0}Est une entrée obligatoire.")> _
Public Property Name As String
<Display(Name:="âge")> _
<StringLength(3, MinimumLength :=1 ,ErrorMessage := "{0}Est{2}Plus d'un chiffre{1}Veuillez entrer dans les chiffres.")> _
Public Property Age As String
End Class
End Namespace
ValidateService.vb
Imports System.ComponentModel.DataAnnotations
Imports System.Collections.Generic
Namespace Com.Example.Demo
Public Class ValidateService
Public Shared Sub Validate(Of T)(target As T)
Dim validationResults As New List(Of ValidationResult)
Dim vc As New ValidationContext(target, Nothing, Nothing)
Dim isValid As Boolean = Validator.TryValidateObject(target, vc, validationResults, true)
If validationResults.Count > 0 Then
Console.WriteLine("Vérification de la valeur d'entrée[NG]")
For Each err As ValidationResult IN validationResults
Console.WriteLine("{0} : {1}", err.MemberNames(0), err.ErrorMessage)
Next
Else
Console.WriteLine("Vérification de la valeur d'entrée[OK]")
End If
End Sub
End Class
End Namespace
App.vb
Namespace Com.Example.Demo
Public Module App
Public Sub Main()
Console.WriteLine("// ------- Validate 1 -------")
'Des données d'entrée
Dim input01 As new User()
'Vérification de la valeur d'entrée
ValidateService.Validate(Of User)(input01)
Console.WriteLine("// ------- Validate 2 -------")
'Des données d'entrée
Dim input02 As new User()
input02.UserId = "123456"
input02.Name = "TARO TOYOSU"
input02.Age = "1234"
'Vérification de la valeur d'entrée
ValidateService.Validate(Of User)(input02)
Console.WriteLine("// ------- Validate 3 -------")
'Des données d'entrée
Dim input03 As new User()
input03.UserId = "123456"
input03.Name = "TARO TOYOSU"
input03.Age = "123"
'Vérification de la valeur d'entrée
ValidateService.Validate(Of User)(input03)
End Sub
End Module
End Namespace
Java compile avec javac
, tandis que VB.net compile avec vbc
.
Bien sûr, tout comme Java a des outils de construction comme Maven et Ant, VB.net a également un outil de construction appelé MsBuild
.
build.bat
@echo off
set DOTNET_HOME=C:\Windows\Microsoft.NET\Framework64\v4.0.30319
set path=%path%;%DOTNET_HOME%
vbc /out:DemoApp.exe /r:System.ComponentModel.DataAnnotations.dll ^
/r:System.ServiceModel.Web.dll ^
App.vb User.vb ValidateService.vb
Modifiez la variable d'environnement de DOTNET_HOME
en fonction de votre propre environnement.
Si vous stockez tous les fichiers dans le même répertoire et exécutez build.bat
, DemoApp.exe
sera créé.
Résultat d'exécution
C:\demo>build.bat
Microsoft (R) Visual Basic Compiler version 14.7.2558
for Visual Basic 2012
Copyright (c) Microsoft Corporation. All rights reserved.
This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to Visual Basic 2012, which is no longer the lates
t version. For compilers that support newer versions of the Visual Basic programming language, see http://go.microsoft.com/fwlink/?LinkID=533241
C:\demo>DemoApp.exe
// ------- Validate 1 -------
Vérification de la valeur d'entrée[NG]
UserId :L'ID utilisateur est requis.
Name :Le nom est obligatoire.
// ------- Validate 2 -------
Vérification de la valeur d'entrée[NG]
Age :Veuillez entrer l'âge entre 1 et 3 chiffres.
// ------- Validate 3 -------
Vérification de la valeur d'entrée[OK]
C:\demo>
Cette fois, j'ai expliqué la différence (en partie) entre Java et VB.net du point de vue d'une boutique Java. Puisque VB.net fait partie du .Net Framework, un langage orienté objet, vous constaterez qu'il n'est pas très différent de Java, le même langage orienté objet. C # est encore plus proche de Java, mais (malheureusement, il existe encore de nombreux projets qui aiment VB **, donc j'espère que cela vous aidera lorsque vous décidez d'utiliser VB.net.
Recommended Posts