ShareXのソースを眺める①~適当リファクタ~
GitHubから適当にソースを拾ってきて、勝手にテスト作ったてみよう。という試み。
・テストの経験値アップ
・他の人のコードみて経験値アップ
・設計が学べる。
が目的。
とりあえずCloneしてみた
⇒ShareX.slnを開くも、フレームワークがちがっててプロジェクトが読み込めない。
⇒フレームワーク4.6.2を使用している模様。ダウンロードが必要なのでダウンロードする。
⇒再度sln開きなおして無事ロード完了。
ともあれビルド
⇒できた。できなかったら次捨てるところだった。
テストを確認
⇒全然ない。書き放題。
ShareX.UploadersLibをくずしていく。
なんとなく、行けそうな空気があるぞ。まずはこのクラスを完全にテストで保護してしまおう。
public string ToSummaryString() { StringBuilder sb = new StringBuilder(); sb.AppendLine("URL: " + URL); sb.AppendLine("Thumbnail URL: " + ThumbnailURL); sb.AppendLine("Shortened URL: " + ShortenedURL); sb.AppendLine("Deletion URL: " + DeletionURL); return sb.ToString(); }
そこまで苦しくなさそう。appendしてくっつけるのがメインの処理か・・・
URLもThumbnailURLもShortenedURL、DelationURLのすべてこのクラスの持ち物。メソッドの場所としては問題ないはず。
「ToSummaryStrgin()」という名称から、何となくこれはデバッグ用のメソッドなんじゃないかとも思う。参照を見てみよう
コード ファイル 行 列 プロジェクト
string UploadResult.ToSummaryString()
'UploadResult.ToSummaryString' の参照は見つかりませんでした D:\git_refact\ShareX\ShareX.UploadersLib\UploadResult.cs ShareX.UploadersLib
ヒュー。たぶん正解。
とりあえずXMLコメントを差し込んでおく
///
/// return combined member variables.
///
///
///
変更の必要はなさそうだが、ひとまずテストで固めておく。
テストは書けたがビルドが通らない。なぞロックが発生している模様
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー "obj\Debug\ShareX.exe" を "bin\Debug\ShareX.exe" にコピーできませんでした。10 回の再試行回数を超えたため、失敗しました。このファイルは "ShareX (21640)" によってロックされています。
管理者権限ですっとばせるか。やってみる。
⇒だめだった。どうにもおかしいのでタスクマネージャーをみてみたら、ShareX.exeが立ち上がっていた。
どうやら興味でF5起動してしまったのが残ってしまっていた模様。
[TestMethod] public void UploadResult_ToSummaryString() { string url = "dummy_url"; string thumbnail = "dummy_thumbnail"; string shortend = "dummy_shortened"; string deletion = "dummy_deletion"; obj.URL = url; obj.ThumbnailURL = thumbnail; obj.ShortenedURL = shortend; obj.DeletionURL = deletion; StringBuilder expectedFormat = new StringBuilder(); expectedFormat.AppendLine("URL: {0}"); expectedFormat.AppendLine("Thumbnail URL: {1}"); expectedFormat.AppendLine("Shortened URL: {2}"); expectedFormat.AppendLine("Deletion URL: {3}"); string expected = string.Format(expectedFormat.ToString(), url, thumbnail, shortend, deletion); string actual = obj.ToSummaryString(); Assert.AreEqual(expected, actual); }
とりあえずテスト実行。
このテストに果たして意味があるのか。。。なさそう。
が、作ってみておもったがURLが平気で外部から参照できるようになっている。この辺は切り崩すべきだろうか。
1週間さわったら次のリポジトリ触る。