ฉันรู้เกี่ยวกับกฎกรณีอูฐ แต่ฉันสับสนกับกฎมนี้ มันหมายถึงอะไร ฉันเป็นนักพัฒนา PHP "เรา" ใช้ตัวอักษรตัวแรกของตัวแปรเป็นตัวบ่งชี้ชนิดเช่น 'b' สำหรับบูลีน 'i' สำหรับจำนวนเต็มเป็นต้น
เป็น 'm' สิ่ง Java หรือไม่ มันยืนสำหรับมือถือ? ผสม?
ฉันรู้เกี่ยวกับกฎกรณีอูฐ แต่ฉันสับสนกับกฎมนี้ มันหมายถึงอะไร ฉันเป็นนักพัฒนา PHP "เรา" ใช้ตัวอักษรตัวแรกของตัวแปรเป็นตัวบ่งชี้ชนิดเช่น 'b' สำหรับบูลีน 'i' สำหรับจำนวนเต็มเป็นต้น
เป็น 'm' สิ่ง Java หรือไม่ มันยืนสำหรับมือถือ? ผสม?
คำตอบ:
สัญลักษณ์นี้มาจาก AOSP (Android Open Source Project) แนวทางสไตล์โค้ดสำหรับผู้มีส่วนร่วม :
ทำตามอนุสัญญาการตั้งชื่อฟิลด์
- ชื่อฟิลด์ที่ไม่ใช่แบบสาธารณะและไม่คงที่เริ่มต้นด้วย m
- ชื่อฟิลด์คงที่เริ่มต้นด้วย s
- ฟิลด์อื่นเริ่มต้นด้วยตัวอักษรตัวพิมพ์เล็ก
- ฟิลด์คงที่สุดท้ายสาธารณะ (ค่าคงที่) คือ ALL_CAPS_WITH_UNDERSCORES
โปรดทราบว่าคู่มือสไตล์ที่เชื่อมโยงนั้นใช้สำหรับรหัสที่จะมีส่วนร่วมใน Android Open Source Project
มันไม่ใช่คู่มือสไตล์สำหรับรหัสของแอพ Android แต่ละตัว
computedValues
... "
บรรทัดคู่มือการเข้ารหัสจำนวนมากใช้ m สำหรับ 'members' ของคลาส ดังนั้นเมื่อคุณเขียนโปรแกรมคุณสามารถเห็นความแตกต่างระหว่างตัวแปรท้องถิ่นและสมาชิก
m
คำนำหน้า
mคำนำหน้าคืออะไร?
mย่อมาจากตัวแปรสมาชิกหรือข้อมูลสมาชิก ใช้mคำนำหน้าสำหรับเขตข้อมูลที่ไม่ใช่แบบสาธารณะและแบบคงที่
ควรใช้เมื่อใด
private String mCityName;
private float mTemperature;
เมื่อไม่ใช้
public static int mFirstNumber;
public static final String mDATABASE_NAME;
สิ่งที่ฉันทำ?
ส่วนตัวผมไม่ได้ใช้ มันทำให้โค้ดมีความซับซ้อนมากขึ้นและทำให้เกิดความสับสนในการอ่านได้ หากคุณยังคงใช้ Notepad สำหรับการเขียนโค้ดฉันไม่มีคำพูด แต่ IDEs ที่ทันสมัยสามารถเน้นและระบายสีสมาชิกและตัวแปรท้องถิ่นหรืออะไรก็ได้
ข้อสรุป
ใช้? "ใช่" หรือ "ไม่" เป็นตัวเลือกส่วนบุคคลของคุณ
public static int
แต่ใช้s
แทนm
: public static int sFirstNumber;
ดูstackoverflow.com/a/49453184/7767664
ถ้าเป็นตัวแปรสมาชิกในคลาส 'm' หมายถึง 'สมาชิก' โปรแกรมเมอร์ Java หลายคนทำเช่นนั้นถึงแม้ว่าจะมี IDE สมัยใหม่ไม่จำเป็นต้องใช้เนื่องจากคุณมีการเน้นเมาส์บนคำแนะนำเครื่องมือ ฯลฯ
อ้างอิงจากหนังสือ Clean Code ไม่ใช่รหัสสะอาด
คุณไม่จำเป็นต้องตัวแปรสมาชิกคำนำหน้าด้วยม. นอกจากนี้ผู้คนเรียนรู้ที่จะไม่สนใจคำนำหน้าหรือคำต่อท้ายเพื่อดูส่วนที่มีความหมายของชื่อ
หากคุณมีปัญหาเช่น
IDE ของคุณเพื่อสร้าง setters / getters และคุณท้ายด้วย getmName () และ setmName ()
อย่าลืมที่จะทำต่อไป ( การตั้งค่า / แก้ไข / สไตล์รหัส / Java / การสร้างรหัส ):
อัปเดต:เราไม่ได้ใช้สิ่งนี้ใน Kotlin (ดังนั้นจึงเป็นการดีกว่าที่จะเปลี่ยนเป็นและไม่ใช้คำนำหน้าอีกต่อไป)
ฉันคิดว่ามันเป็นเรื่องส่วนตัวมาก ๆ ที่ใช้รหัสการประชุม ฉันต้องการตั้งชื่อตัวแปรของฉันด้วยคำนำหน้าต่อไปนี้:
แต่ฉันเดาว่าโปรแกรมเมอร์แต่ละคนมีสไตล์ของตัวเอง
เพื่อพิสูจน์ว่าคุณไม่ควรปฏิบัติตามอนุสัญญานี้ในการตั้งชื่อตัวแปรในรหัสของคุณฉันต้องส่งภาพหน้าจอจากAndroid Studio ของผู้ปกครองที่นี่
ค้นหาตัวแปรที่อยู่ในวัตถุที่เรียงลำดับเป็นพิเศษเพื่อวางตัวแปร m ต่ำกว่าตัวแปรเนทีฟของคุณ ดังนั้นโดยตั้งชื่อพวกเขาในรหัสของคุณด้วย "m" คำนำหน้าคุณซ่อนไว้ในกองจากตัวเอง
ประโยชน์อย่างหนึ่งที่ฉันพบในรูปแบบของรหัสนี้คือในช่วงที่การเติมตัวแปรอัตโนมัติเสร็จสมบูรณ์ฉันรู้ว่าฉันสามารถพิมพ์ "m" เพื่อดูเฉพาะตัวแปรสมาชิก
ดังที่ได้กล่าวไว้ก่อนหน้านี้มันเป็นสไตล์สำหรับตัวแปรที่แตกต่าง แต่มันก็มีประโยชน์มากสำหรับการสร้างรหัส หากคุณกด "Alt + Insert" คุณจะได้รับ windows สำหรับคุณสมบัติการสร้างรหัสทั่วไป หากคุณต้องการสร้างวิธี "รับ" สำหรับตัวแปรของคุณคุณจะได้รับ
public class Foo{
private int bar;
public int getBar(){
return this.bar;
}
public void setBar(int bar){
this.bar = bar;
}
}
แต่ถ้าคุณประกาศ "m, s" คุณจะได้รับ:
public class Foo{
private int mBar;
public int getBar(){
return mBar;
}
public void setBar(int bar){
mBar = bar;
}
}
มันจะถูกสร้างขึ้นโดยอัตโนมัติและ "m" หรือ "s" ถูกลบออกจากตัวสร้างของคุณรับและตั้งชื่อวิธีการ หลังจากนี้ "รับ" "และ" ตั้ง "สำหรับฟิลด์จะถูกสร้างขึ้นโดยไม่มี" m " Andoroid Fle-> Setting-> Style Code-> Java-> Genenretion Code และทำตามภาพ บางทีมันอาจจะช่วย ขอโทษด้วยสำหรับฉัน กำหนดค่า android
ดูเหมือนจะเป็นการตั้งค่าส่วนตัวของวิศวกร Android / Google รุ่นแรก ๆ เพื่อเริ่มใช้ตัวแปรสมาชิกด้วย 'm' และพวกเขาจึงแนะนำ
ตอนนี้กฎนี้ถูกบังคับให้คอของนักพัฒนาใน บริษัท ที่ไม่ใช่ผู้ให้ AOSP เพียงเพราะหน้านั้นถือว่าเป็นกฎสไตล์รหัส Android มีประโยชน์เพียงเล็กน้อยในกฎนั้น Google ควรพิจารณาลบมัน มิฉะนั้นโปรดระบุว่าสำหรับแอพ Android ที่กฎสไตล์รหัสเป็นตัวเลือก
โปรดเพิ่มความคิดเห็นของคุณในการสนับสนุนคำร้องนี้เพื่อลบกฎhttps://code.google.com/p/android/issues/detail?id=226814
ตามหลักการของการอ่านm
สำหรับตัวแปรสมาชิกและs
เขตข้อมูลแบบคงที่ไม่ควรใช้อีกต่อไปหากคุณใช้ IDE สมัยใหม่เช่น Android Studio Android สตูดิโอสามารถแยกความแตกต่างระหว่างคนโดยไม่ต้องเพิ่มหรือm
s
นอกจากนี้ยังสามารถระบุได้ว่ามันเป็น "เหมือง" ดังที่ใน Class / Instance กำลังพูดว่า "ตัวแปรนี้เป็นของฉันและไม่มีใครสามารถเข้าถึงได้" แตกต่างจากแบบคงที่ซึ่งในขณะที่มันอาจจะใช้ได้เฉพาะกับระดับนั้นมันถูกใช้ร่วมกันโดยทุกกรณีของชั้นเรียนนั้น เช่นถ้าคุณวาดวงกลมคุณต้องรู้ว่ารัศมีของวงกลมแต่ละวงนั้นใหญ่แค่ไหน
private double mRadius;
แต่ในเวลาเดียวกันคุณต้องการให้ตัวนับติดตามวงกลมทั้งหมดภายในคลาสวงกลมที่คุณมี
private static int sCircleCount;
จากนั้นเพียงแค่มีสมาชิกแบบสแตติกเพื่อเพิ่มและลดจำนวนของแวดวงที่คุณมีอยู่ในปัจจุบัน
ต่อไปนี้เป็นแบบแผนการตั้งชื่อ
- ชื่อฟิลด์ที่ไม่ใช่แบบสาธารณะและไม่คงที่เริ่มต้นด้วย m
- ชื่อฟิลด์คงที่เริ่มต้นด้วย s
- ฟิลด์อื่นเริ่มต้นด้วยตัวอักษรตัวพิมพ์เล็ก
- ฟิลด์คงที่สุดท้ายสาธารณะ (ค่าคงที่) คือ ALL_CAPS_WITH_UNDERSCORES
ตัวอย่าง:
public class MyClass {
public static final int SOME_CONSTANT = 42;
public int publicField;
private static MyClass sSingleton;
int mPackagePrivate;
private int mPrivate;
protected int mProtected;
}