我刚才在一个截屏视频中看到过(因为忘了哪个,可能是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
您可以根据自己的需要定制代码.