Pleasanterのコードスタイル 空白行編
Pleasanter開発チームのいしざきです。
PleasanterはオープンソースのWebデータベースでGitHubにソースが公開されています。
今回はPleasanterへプルリクエスト(PR)する際に気にしたいコードスタイル 空白行編です。
コードの上で空白行というと何を思い浮かべるでしょうか? 詳し方ならリーダブルコードの
コードを「段落」に分割する
の節を思い浮かべるかもしれません。リーダブルコードは素晴らしい指針です。しかし世界の全てのプロジェクトが同じルールを採用しているわけではありません。
よく見るスタイルとPleasanterの比較
次の例はよく見るコードルールで書かれたC#クラスです。このクラスがPleasanterではどうなるか見てみましょう。
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace SampleApp { public class PopularStyleClass { public async Task<string> GetDataFromWeb() { // Create HttpClient var httpClient = CreateHttpClient(); httpClient.Timeout = new TimeSpan(TimeSpan.TicksPerSecond * 20L); // Request Data var contentData = "<contentData>"; var requestContent = new StringContent(contentData); // Post var responceMessage = await httpClient.PostAsync("<requestUrl>", requestContent); // Responce Data var responceContent = responceMessage.Content; var responceData = await responceContent.ReadAsStringAsync(); return responceData; } HttpClient CreateHttpClient() => new HttpClient(); } }
Pleasanterでは次のようになります。
(※筆者も勉強中のため100%正しいPleasanterのスタイルではないかもしれません。勉強のためにこの記事を書いている面もあります)
using System; using System.Net.Http; using System.Threading.Tasks; namespace SampleApp { public static class PleasanterStyleClass { public static async Task<string> GetDataFromWeb() { var hc = CreateHttpClient(); hc.Timeout = new TimeSpan(ticks: TimeSpan.TicksPerSecond * 20L); return await (await hc .PostAsync( requestUri: "<requestUrl>", content: new StringContent("<contentData>"))) .Content .ReadAsStringAsync(); } private static HttpClient CreateHttpClient() { return new HttpClient(); } } }
Pleasanterの空白行
Pleasanterの空白行はクラスのメンバーとメンバーの間だけです。
usingとnamespaceの間について
よく見るスタイルではusingとnamespaceの間に空白行があります。
using System.Threading.Tasks; namespace SampleApp
Pleasanterではusingとnamespaceの間に空白はありません。
using System.Threading.Tasks; namespace SampleApp
メソッド内の段落について
よく見るスタイルではメソッド内に段落の空白行があります。
// Create HttpClient var httpClient = CreateHttpClient(); httpClient.Timeout = new TimeSpan(TimeSpan.TicksPerSecond * 20L); // Request Data var contentData = "<contentData>";
Pleasanterではメソッド内に段落の空白はありません。
var hc = CreateHttpClient(); hc.Timeout = new TimeSpan(ticks: TimeSpan.TicksPerSecond * 20L); return await (await hc
メソッドとメソッドの間
Pleasanterでは空白はクラスのメンバーとメンバーの間だけです。
.ReadAsStringAsync(); } private static HttpClient CreateHttpClient()
PRのお願い
PleasanterへのPRいただける際には空白はメンバーとメンバーの間だけでお願いします。
また、メンバーとメンバーの間以外の空白行やメンバーとメンバーの間に空白行のない箇所を見つけた方、ぜひ修正してPRお願いします。
その他のコードスタイル
今回のコード例だけでも空白行以外にも様々なコードルールが読み取れますが、Pleasanterは日々進化中でPR時のお願い事項などの整備は取り組み中の状態です。
不定期になりますが今後も少しずつこちらのブログで紹介してまいります。今後PRするかもしれないという方、継続してチェックしていただけると嬉しいです。