Member 13790815 Ответов: 2

Как сделать эту работу без использования венгерских обозначений, таких как int или dec для .NET


Мне нужно, чтобы приведенный ниже код работал без использования венгерских обозначений, таких как int или dec.
Сначала я использовал его, но мой инструктор не любит, когда мы используем венгерскую нотацию. Так что он работает с венгерской нотацией, но теперь он не работает без нее. Я знаю, что в .NET смысл использования не венгерских кодов заключается в удобочитаемости, но на самом деле это просто усложняет мне задачу.

Что я уже пробовал:

Option Strict On
Public Class ChangeCal
    Private Sub TextBox6_TextChanged(sender As Object, e As EventArgs) Handles dollars.TextChanged

    End Sub

    Private Sub calculate_Click(sender As Object, e As EventArgs) Handles calculate.Click
        Dim dpaid As Decimal
        Dim dowe As Decimal
        Dim dchangedue As Decimal
        Dim dQuarters As Decimal
        Dim dDimes As Decimal
        Dim dNickels As Decimal
        Dim dPennies As Decimal
        Dim dTempValue As Decimal
        Dim dDollars As Decimal

        dpaid = CDec(Val(paid.Text))
        dowe = CDec(Val(owe.Text))
        dchangedue = dpaid - dowe


        If Not IsNumeric(paid.Text) Then
            MsgBox("Invalid Due Amonut Entry", MsgBoxStyle.Critical)

        End If

        If Not IsNumeric(owe.Text) Then
            MsgBox("Invalid Due Amonut Entry", MsgBoxStyle.Critical)

        End If

        dValue = CInt(dchangedue * 100)

        dDollars = dValue \ 100
        dollars.Text = CType(dDollars, )

        dValue = dValue Mod 100
        dQuarters = dValue \ 25
        quarters.Text = CType(dQuarters, )

        dValue = dValue Mod 25
        dDimes = dValue \ 10
        dimes.Text = CType(dDimes, )

        dValue = dValue Mod 10
        dNickels = dValue \ 5
        nickels.Text = CType(dNickels, )

        dValue = dValue Mod 5
        dPennies = dTempValue
        pennies.Text = CType(dPennies, )

        If dpaid < dowe Then

            MsgBox("You Still Owe=" & Format(decchangedue, "Currency"))
        End If

    End Sub

    Private Sub clear_Click(sender As Object, e As EventArgs) Handles clear.Click
        paid.Clear()
        owe.Clear()
        dollars.Clear()
        quarters.Clear()
        dimes.Clear()
        nickels.Clear()
        pennies.Clear()
    End Sub

    Private Sub xit_Click(sender As Object, e As EventArgs) Handles xit.Click
        Me.Close()
    End Sub
End Class

Patrice T

Покажите, как выглядит этот код без венгерской нотации.

Richard Deeming

Предполагая, что вы используете последнюю версию Visual Studio, используйте Реорганизация с переименованием[^] чтобы безопасно переименовать ваши переменные.

2 Ответов

Рейтинг:
0

Wendelius

Если я правильно понял ваш вопрос, венгерская нотация-это просто способ дать имена вашим переменным. Если в именовании нет конфликтов и переменные используются правильно, то код будет работать независимо от нотации (венгерский, CamelCase,...).

Таким образом, код, который не работает, не имеет ничего общего с нотацией, а с тем, как вы используете определенные переменные.

Вы не уточнили, что подразумеваете под "кодом не работает", но на первый взгляд кажется, что здесь у вас есть ложно названная переменная

MsgBox("You Still Owe=" & Format(decchangedue, "Currency"))

В объявлениях вы объявили имя как dchangedue
Если это так, компилятор должен показать вам ошибку о ситуации.


Рейтинг:
0

Patrice T

Цитата:
Так что он работает с венгерской нотацией, но теперь он не работает без нее.

Как можно написать рабочий код с венгерской нотацией и не иметь возможности изменить имена переменных, чтобы удалить часть венгерской нотации ?
Я вижу только 2 возможности:
- Либо изменения имен переменных не согласованы в вашем коде.
- Либо изменения имен переменных приводят к столкновению имен (2 разные вещи с разными именами заканчиваются одним и тем же именем).

Но, не видя "нерабочего кода", трудно сказать.