モノトーンの伝説日記

Apex Legends, Splatoon, Programming, and so on...

いろいろな言語について命名規則とか書き方とかまとめてみた

 なんとなくまとめてみた。

概要

  1. あいさつ
  2. C
  3. C++
  4. C#
  5. VB
  6. Java 6
  7. Java 7+
  8. F#
  9. まとめ

1. あいさつ

 なんとなくまとめてみるだけ。本当は画像にしたいけどテキストで表現するので表現力乏しくなります(´・ω・`)

 私が使ってて感覚的に補っているのもあるかも。基本ハンガリアン嫌いなので。

2. C

header

#define CONSTANT_VALUE 12    // screaming snake

typedef struct
{
    int value;    // lower
    _Bool autoflag;
} str_name;    // snake

extern void processdata();    // lower

impl

#include "sample.h"

void processdata() { ... }

3. C++

header

namespace smpl {    // lower

    const int CONSTANT_VALUE = 12;    // screaming snake
    
    class class_name final    // snake
    {
    public:
        class_name();

        void process_data();    // snake

    public:
        int get_value() const { return value_; }
        void set_value( int value ) { value_ = value; }

        bool get_auto_flag() const { return auto_flag_; }
        void set_auto_flag( bool value ) { auto_flag_ = value; }

    private:
        int value_;    // snake + '_'
        bool auto_flag_;
    }

}

impl

#include "sample.hpp"

using namespace smpl;

class_name::class_name()
    : value_( 12 )
    , auto_flag_( true )
{}

void class_name::process_data() { ... }

4. C# 6.0

using System;
using static System.Console;

namespace Sample {    // upper camel

    public sealed class ClassName    // upper camel
    {
        private int _value;    // '_' + lower camel

        public ClassName()
        {
            this._value = 12;
        }

        public void ProcessData() { ... } // upper camel

        public int Value
        {
            get { return this._value; }
            set { this._value = value; }
        }

        public bool AutoFlag { get; set; }
    }

}

5. VB

Imports System

Namespace Sample    ' upper camel
    Public NotInheritable Class ClassName    ' upper camel
        Dim _value As Integer    ' '_' + lower camel

        Public Sub New()
            Me._value = 12
            Me.AutoFlag = True
        End Sub

        Public Sub ProcessData()    ' upper camel
            ...
        End Sub

        Public Property Value() As Integer    ' upper camel
            Get
                Return Me._value
            End Get
            Set (ByValue Value As Integer)
                Me._value = Value
            End Set
        End Property

        Public Property AutoFlag As Boolean
    End Class
End Namespace

6. Java 6

package sample;    // lower

import java.util.*;
import java.util.concurrent.*;
import static java.lang.Math.PI;
import static java.util.Collections.*;

public final class ClassName    // upper camel
{
    private int _value;    // '_' + lower camel
    private boolean _autoFlag;

    public Sample()
    {
        this._value = 12;
        this._autoFlag = true;
    }

    public void processData() { ... }    // lower camel

    public int getValue() { return this._value; }    // lower camel
    public void setValue( int value ) { this._value = value; }    // lower camel

    public boolean getAutoFlag() { return this._autoFlag; }
    public void setAutoFlag( boolean value ) { this._autoFlag = value; }
}

7. Java 7

package sample;

import java.util.*;
import java.util.concurrent.*;
import static java.lang.Math.PI;
import static java.util.Collections.*;

public final class ClassName    // upper camel
{
    private int _value;    // '_' + lower camel

    public Sample()
    {
        this._value = 12;
        this._autoFlag = true;
    }

    public void processData() { ... }    // lower camel

    public property int value    // lower camel
    {
        get { return this._value; }
        set( int value ) { this._value = value; }
    }

    public property boolean autoFlag;
}

8. F

 関数型言語でなおかつ .NET で使いやすいような設計。データと操作は分離。

namespace Sample    // upper camel

open System

[<Sealed>]
type ClassName() =    // upper camel
    let mutable value = 12    // lower camel
    let mutable autoFlag = true;    // lower camel
    [<CompiledName "Value">]
    member this.value    // lower camel
        with get() = value
        and set(value2) = value <- value2
    [<CompiledName "AutoFlag">]
    member this.autoFlag
        with get() = autoFlag
        and set(value) = autoFlag <- value

[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module ClassName =
    let processData (self: ClassName) =
        ...

9. まとめ

 飽きた。本当は Scala とか Swift とか書きたいなぁ、って思うけど、過去にまったく慣れ親しんだことがないのでわからん。

 なんていうか、疲れたし、何より F# の知識が深まっただけの記事だった。なかなかおもろい。

 もちろんコンパイル試してないので動くかわからん。動かなかったすんません。

 小さめの新規プロジェクトやろうとしていろいろ調べてたらこんな記事書いてたってワケ。

 おなかの調子悪くてぷっぷか、ぷっぷか言いながら書いてます…w

 んー、Swift やるために OS X ほしいぞ! ちなみに興味ある言語は C++, C#, VB, F#, Java, Scala, Swift, Perl, Python, JavaScript, TypeScript, ActionScript ですかね。

 VB はまあおまけ。.NET やるときなくてはならない存在だしね。Roslyn さんに VB が入るなんて俺なんて想像しなかったし将来的に着られると思ってたけどここまでサポートされてるってことはそれなりに VB という言語が大事にされている理由がなんかあるのだろう。

 まあこんな感じでいいですかね。え? LW 系言語について書いてないって? いや、そりゃもうその分野から離れまくって私が書くのもあれですから、ね?