なんとなくまとめてみた。
概要
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 系言語について書いてないって? いや、そりゃもうその分野から離れまくって私が書くのもあれですから、ね?