P-Review'19「見やすいコードのためのusing」
CD部 須合雅之自己紹介• 氏名 ： 須合雅之• 所属 ： コンテンツデザイン部• 新卒1年目

1テーマの選定理由
今回のテーマ・・・「見やすいコードのためのusing」

2

テーマの選定理由
仕事で初めて触れたコードがとても見やすかった
見やすくするための手法にusingが使われていた・usingを使ってコードを見やすくする手法
・usingがどんなことをしているか後世のエンジニアに知ってもらいたい3

仕事で触れたコード見やすいと感じた点• 関数名、型名がわかりやすい• 一つ一つの処理が簡潔• 一行が長すぎない4

なぜ見やすさが大事か
コードが見づらいと、読みたくない5

なぜ見やすさが大事か※コード エディターの画面

6

なぜ見やすさが大事か※コード エディターの画面画面に収まっていない7

なぜ見やすさが大事か
見づらいコードを書いてしまうと(読みたくないようなコードを書いてしまうと)他人が読む際に解析に時間がかかり開発効率が悪くなってしまう8

なぜ見やすさが大事か※コード エディターの画面

9

なぜ見やすさが大事か※コード エディターの画面

読みたくない10なぜ見やすさが大事か※コード エディターの画面

読めそう
11

なぜ見やすさが大事か※コード エディターの画面

読めそう
12

usingでできること• 別名を付ける• namespaceを省略

13

usingでできること• 別名を付ける• namespaceを省略

14

別名を付ける
usingを使う前のコード

struct BattleParamater{
unsigned int Attack;unsigned int Defense;
unsigned int MagicAttack;unsigned int MagicDefense;}
unsigned int CalcDamage(unsigned int attack, unsigned int defence);15

別名を付ける
usingを使う前のコード「unsigned int」をまとめたい
struct BattleParamater{
unsigned int Attack;unsigned int Defense;
unsigned int MagicAttack;unsigned int MagicDefense;}
unsigned int CalcDamage(unsigned int attack, unsigned int defence);16

別名を付ける
usingを使ったコード

using uint = unsigned int;
struct BattleParamater{uint Attack;uint Defense;
uint MagicAttack;uint MagicDefense;}
uint CalcDamage(uint attack, uint defence);17

別名を付ける
usingを使ったコード「unsigned int」に「uint」という別名をつけた
using uint = unsigned int;
struct BattleParamater{uint Attack;uint Defense;
uint MagicAttack;uint MagicDefense;}
uint CalcDamage(uint attack, uint defence);18

別名を付ける既存の型をusing を使って別名で宣言し直すことができる

式： using (新しい型名) = (古い型名)
よく見るusing
//
//
//
//

符号付き8ビット変数
符号付き16ビット変数
符号付き32ビット変数
符号付き64ビット変数

using u8 = unsigned char;//using u16 = unsigned short;//using u32 = unsigned int;//
using u64 = unsigned long long; //符号無し8ビット変数
符号無し16ビット変数
符号無し32ビット変数
符号無し64ビット変数

using s8 = signed char;using s16 = signed short;using s32 = signed int;
using s64 = signed long long;19

別名を付ける

20

別名を付ける21

別名を付ける
C#の場合、クラスに対してだけでなく、namespaceに対しても別名を付けることができる
namespace PC{
namespace MyCompany{
namespace Project{public class MyClass { }}}using Project = PC.MyCompany.Project;class Program{void Main(){var mc = new Project.MyClass();}
}

}

22

usingでできること• 別名を付ける• namespaceを省略

23

namespaceを省略普通に使うと…
毎回「std::」付けるのは面倒、長くなる#include <string>#include <iostream>#include <vector>
void Func(){
std::vector<std::string> month = {"むつき", "きさらぎ", "やよい"};for (int i = 0; i < month.size(); i++)std::cout << month[i] << std::endl;}

24namespaceを省略
using namespaceで、指定したnamespaceを直接使える「std::」が無くなり、見やすくなった#include <string>#include <iostream>#include <vector>
using namespace std;
void Func(){
vector<string> month = {"むつき", "きさらぎ", "やよい"};for (int i = 0; i < month.size(); i++)cout << month[i] << endl;}

25

namespaceを省略
using未使用の場合
class Program{static void Main(){
System.Console.WriteLine("√(3*3 + 4*4) = " + System.Math.Sqrt(3*3 + 4*4));
System.Console.WriteLine("√(5*5 + 6*6) = " + System.Math.Sqrt(5*5 + 6*6));}}

usingを使った場合
using System.Console;using System.Math;class Program{static void Main(){WriteLine("√(3*3 + 4*4) = " + Sqrt(3*3 + 4*4));
WriteLine("√(5*5 + 6*6) = " + Sqrt(5*5 + 6*6));
}
}

26

まとめ
見づらいコードは読みたくない

見やすいコードのために、usingで・別名を付ける・namespaceを省略する

27

読もうと思えるコードを目指しましょう28