ChatGPTにコードをレビューしてもらう

ChatGPTにコードレビューをしてもらう

自作MakeUserSickメソッドを改良(?)する

今話題のChatGPTにコードを投げると、コードレビューしてもらえる。

孤独なVBAマンには実にありがたい。

そこで、わが最高傑作(?)、MakeUserSickメソッドを少し改良(?)して、ChatGPT先生に見てもらうことにした。

……と、ここまでフツーに「ChatGPT」などと表記してきたが、実は「GPT」だったか「GPI」だったか、思い出せなくなっていたので、先に尋ねておいたのである。

MakeUserSickメソッドの改良

元のMakeUserSickメソッドはコチラ

早速、改良(?)後のコードをお目に掛けよう。

リスト1
Public Enum MsgBoxStyle
  mbsOkOnly = vbOKOnly
  mbsOkCancel = vbOKCancel
  mbsCritical = vbCritical
  mbsExclamation = vbExclamation
  mbsInformation = vbInformation
  mbsQuestion = vbQuestion
  mbsYesNo = vbYesNo
  mbsYesNoCancel = vbYesNoCancel
End Enum

'///ち~んw用'
Private Const MAKE_USER_SICK_2013 As String = _
              "       _______" & vbCrLf & _
              "   /       \" & vbCrLf & _
              "/ /・\  /・\ \" & vbCrLf & _
              "|   ̄ ̄    ̄ ̄   |   ち~んw" & vbCrLf & _
              "|    (_人_)   |" & vbCrLf & _
              "|     \  |   |" & vbCrLf & _
              "\     \_|  /"

Private Const MAKE_USER_SICK_2010 As String = _
              "     _______" & vbCrLf & _
              " /               \ " & vbCrLf & _
              "/ /・\  /・\     \" & vbCrLf & _
              "|   ̄ ̄    ̄         | ち~んw" & vbCrLf & _
              "|    (_人_)       |" & vbCrLf & _
              "|     \     |          |" & vbCrLf & _
              "\      \_|       /"

'///ユーザーを煽るAAを表示する'
Public Function MakeUserSick( _
               Optional ByVal a_Message As String, _
               Optional ByVal a_Style As MsgBoxStyle, _
               Optional ByVal a_Title As String) As VbMsgBoxResult
  Dim ret As VbMsgBoxResult
  ret = vbCancel
  If a_Message = "" Then a_Message = "涙拭けよwww"
  Dim ver As String
  ver = Application.Version
  Dim tmp As String
  Select Case ver
    Case "14.0"
      tmp = MAKE_USER_SICK_2010
    Case "15.0"
      tmp = MAKE_USER_SICK_2013
    Case "16.0"
      tmp = MAKE_USER_SICK_2013
    Case Else
      tmp = MAKE_USER_SICK_2010
  End Select
  ret = MsgBox(prompt:=a_Message & vbCrLf & tmp, _
               Buttons:=a_Style, _
               Title:=a_Title)
  MakeUserSick = ret
End Function

旧ヴァージョンは、Subだったが、今度のやつはFunctionである!

ユーザーを軽く煽った上で、ユーザーの意思を確認することまでできるニクいやつになったのである!

まあ、そんなことはどうでもよろしい。

さっそくChatGPT先生にレビューしてもらおう。

ChatGPT先生にレビューをお願いする

これは実に簡単。

コードを丸ごと貼り付けて、最後に「このコードをレビューしてください。」と付け加えるだけ。

まっ たく 簡 単 だ。

ChatGPT先生のお答え

テキストでも引用しておく。

このコードは、VB.NETで書かれたMsgBox関数を使用したカスタムのメッセージボックス機能を実装しています。以下は、このコードのレビューです。


  • 列挙型(Enum)MsgBoxStyleが定義されており、MsgBoxで使用できる定数を指定しています。これにより、MsgBoxの呼び出し時に可読性が向上し、コードの意図を明確にすることができます。
  • メッセージボックスに表示するAAアートを定数として定義し、MakeUserSick関数で使用されています。これにより、ユーザーに強烈な印象を与えることができますが、実際のアプリケーションで使用する場合は注意が必要です。ユーザーに不快感を与える可能性があります。
  • メッセージ、スタイル、タイトルを引数として取り、MsgBoxを呼び出します。MsgBoxの戻り値は、MakeUserSick関数の戻り値として使用されます。
  • MakeUserSick関数の戻り値の型は、VbMsgBoxResultとして指定されています。これは、MsgBox関数の戻り値と同じ型です。
  • ユーザーが何も入力しなかった場合に備えて、デフォルトのメッセージが設定されています。
  • アプリケーションのバージョンに応じて、異なるAAアートが使用されます。アプリケーションのバージョンが14.0の場合は、2010年のAAアートが使用されます。15.0と16.0の場合は、2013年のAAアートが使用されます。これは、AAアートがバージョンによって異なる可能性があるためです。

このコードは、カスタムのメッセージボックス機能を実装するための簡潔で効果的な方法です。ただし、ユーザーに不快感を与える可能性があるAAアートを使用する場合は、注意が必要です。また、アプリケーションのバージョンに依存する処理が含まれているため、将来的にバージョンアップする場合は、注意してコードを修正する必要があります。

ところどころトンチキなことも言っているが、まあまあ正確なレビューなんではなかろうか。

特に、「ユーザーに不快感を与える」というところなんか、正直すげえなあ、と思う。

おわりに

自作のコードをいろいろ投げてみたら、おもしろいですよ。