visual-studio – Visual Studio中函数名称的字符串

我刚才在一个截屏视频中看到过(因为忘了哪个,可能是Kata),一个人在写一个单元测试,但写了这样的东西:

公众“为所有排水沟游戏归零”

然后他们神奇地把它变成了

public returnZeroForAnAllGutterGame

是否有一个插件或只是一个简单的方法来做一个模板,在关键的中风被解雇?

我google了一下,只是想不出一个好的方法来输入搜索来获得我想要的东西.

最佳答案 我找不到你引用的插件或宏,但我确实创建了一个可以正常工作的宏!

首先,要安装,请执行以下操作:

>按Alt F11
>展开MyMacros
>打开EnvironmentEvents模块
>将代码过去到模块中(代码在本文末尾找到)
>关闭宏编辑器

要使用宏:

>按`(grave键).
>下一步按“
>键入您想要的单词
>输入“`结束
>观看魔术发生!

注意:您可以开始键入一个sting值,然后在之前和之后添加严重符号,它仍然可以工作.

宏将删除空格,然后PascalCase整个单词集.它还删除了单引号和双引号.最后,如果你想使用Roy Osherove(The Unit of Unit Testing,p.211)建议的命名约定,它会将逗号转换为下划线:

MethodUnderTest_Scenario_Behavior()

例子:

public void `"return zero for an all gutter game"`

public void `"LoadMainParts, when materials files are valid, will return a list of parts sorted by sequential item number ascending"`

…将变成这个(在第二次’按下之后):

public void ReturnZeroForAnAllGutterGame    

public void LoadMainParts_WhenMaterialsFilesAreValid_WillReturnAListOfPartsSortedBySequentialItemNumberAscending

宏:

...

Imports System.Text.RegularExpressions

...

Private isPascalCaseAndSpaceRemovalEnabled As Boolean

Private Function ConvertToPascalCase(ByVal value As String) As String
    'apply ToUpper on letters preceeded by a space, double quotes, or a comma'
    Dim pattern As String = "[ ,"",\,][a-z]"
    value = Regex.Replace(value, _
                          pattern, _
                          Function(m) m.Value.ToUpper, _
                          RegexOptions.Singleline)

    'replace commas with underscores'
    value = value.Replace(",", "_")

    'remove spaces, graves, double quotes, and single qoutes'
    Dim removalCharacters As String() = {" ", "`", """", "'"}
    For Each character In removalCharacters
        value = value.Replace(character, "")
    Next

    Return value
End Function

Private Sub TextDocumentKeyPressEvents_AfterKeyPress(ByVal Keypress As String, _
                                                     ByVal Selection As EnvDTE.TextSelection, _
                                                     ByVal InStatementCompletion As Boolean) _
                                                     Handles TextDocumentKeyPressEvents.AfterKeyPress

    If isPascalCaseAndSpaceRemovalEnabled AndAlso Keypress = "`" Then
        Selection.SelectLine()

        Dim pattern As String = "`""(.*)""`"
        Dim substringToReplace As String = Regex.Match(Selection.Text, _
                                                       pattern, _
                                                       RegexOptions.Singleline).Value
        Selection.ReplacePattern(pattern, _
                                 ConvertToPascalCase(substringToReplace), _
                                 vsFindOptions.vsFindOptionsRegularExpression)

        Selection.MoveToPoint(Selection.BottomPoint)

        isPascalCaseAndSpaceRemovalEnabled = False
        CancelKeyPress = True

    ElseIf Keypress = "`" Then
        isPascalCaseAndSpaceRemovalEnabled = True
    End If

End Sub

您可以根据自己的需要定制代码.

点赞