การแปลข้อมูลภายนอกเป็นภาษาที่คุณกำลังตั้งโปรแกรม


39

ฉันไม่แน่ใจว่าจะทำอย่างไรกับสิ่งต่อไปนี้:

เราใช้ข้อมูลจากเครื่องมือภายนอกภายในเครื่องมือของเราเอง ข้อมูลนี้เขียนเป็นภาษาดัตช์ เรากำลังเขียนโค้ด Java ของเราเป็นภาษาอังกฤษ เราควรแปลภาษาดัตช์นี้เป็นภาษาอังกฤษหรือแปลเป็นภาษาดัตช์ ตัวอย่างเช่นเรามี 2 แผนกคือ Bouw (ก่อสร้างเป็นภาษาอังกฤษ) และ Onderhoud (บำรุงรักษาเป็นภาษาอังกฤษ)

มันจะเป็นตรรกะในการสร้าง:

public enum Department { BOUW, ONDERHOUD }

หรือ:

public enum Department { CONSTRUCTION, MAINTENANCE }

หรือแม้กระทั่ง:

public enum Afdeling { BOUW, ONDERHOUD }

(ผู้ที่สนใจคือแผนกในภาษาดัตช์)


3
สำเนาซ้ำที่เป็นไปได้ของข้อตกลงการตั้งชื่อที่ไม่ใช่ภาษาอังกฤษ
gnat

3
ฉันเดาว่ามันไม่ซ้ำกันเพราะฉันกำลังพูดถึงข้อมูลภายนอกไม่ใช่ข้อมูลแอปพลิเคชันของเราซึ่งมีชื่อเป็นภาษาอังกฤษ
Jelle

1
หากใช้วัตถุหรือแหล่งข้อมูลที่ไม่ใช่ภาษาอังกฤษโดยทั่วไปจะช่วยให้มีตารางอ้างอิงการแปลของเทียบเท่าภาษาอังกฤษคร่าวๆสำหรับแต่ละฟังก์ชั่นและวัตถุข้อมูล สิ่งนี้มีความเกี่ยวข้องอย่างยิ่งกับชื่อฟังก์ชั่นและชื่อวัตถุที่ใช้หลายคำซึ่งเป็นเรื่องธรรมดาในบางภาษา ฉันต้องแก้ไขข้อบกพร่องที่ไม่ได้อยู่ในภาษาแม่ของฉันโดยที่ไม่มีความรู้ภาษาอย่างแน่นอน แต่เนื่องจากมีพจนานุกรมแปลสำหรับโปรแกรมนั้นมันจึงเป็นเรื่องเล็กน้อย โดยทั่วไปแล้วไลบรารี่การแปลแบบเป็นโปรแกรมจะรวมอยู่ในโครงการที่แปลซอฟท์แวร์เป็นภาษาท้องถิ่นเท่านั้น
kayleeFrye_onDeck

3
โปรแกรมที่เหลือของคุณ (นอกเหนือจากห้องสมุดมาตรฐาน) ใช้ตัวระบุภาษาอังกฤษหรือดัตช์หรือไม่
user253751

สำหรับตอนนี้เราใช้ภาษาอังกฤษเท่านั้น แต่ปัจจุบันแผนกเป็นข้อมูลผู้ใช้ที่เข้ารหัสยากเพียงคนเดียวเนื่องจากแผนกของโครงการหนึ่งมีบทบาทสำคัญในแอปพลิเคชันของเรา ค่าดัตช์อื่น ๆ จะถูกบันทึกไว้ในฐานข้อมูลของเราดังนั้นจึงไม่ได้ hardcoded
Jelle

คำตอบ:


33

ในสถานการณ์นี้ฉันจะปล่อยให้ค่า enum เป็นภาษาดัตช์:

public enum Department { BOUW, ONDERHOUD }

เพราะตรรกะโดยใช้ค่าคงที่เหล่านี้จะถูกจับคู่กับข้อมูลที่ยังอยู่ในดัตช์ ตัวอย่างเช่นหากอินพุตคือ "bouw" รหัสเปรียบเทียบอาจมีลักษณะดังนี้:

if (Department.BOUW == input.toUpper())

ฉันพบว่าการดีบักง่ายขึ้นเมื่อค่าตรงกัน (แม้ว่าฉันจะไม่ทราบว่าค่าหมายถึงอะไร) การแปลเพียงเพิ่มความรู้สึกห่วงฉันในฐานะนักพัฒนาไม่ควรต้องผ่านการพิสูจน์ความถูกต้อง

อย่างไรก็ตามคุณสามารถแสดงความคิดเห็นรหัสหากมันช่วยให้ผู้อื่นเข้าใจบริบทของข้อมูล:

public enum Department { 
    BOUW, /* build */
    ONDERHOUD /* maintenance */
}

3
@Jelle แน่นอนถ้าคุณเคยขยายตัวในระดับสากลคุณอาจดีใจกับตรรกะการแปลอยู่ดี YMMV บน YAGNI
Williham Totland

6
คุณไม่ควรเปรียบเทียบ enums ของคุณกับสตริงโดยตรง ถ้าคุณต้องเปรียบเทียบสตริงที่มีหลายคำด้วยค่า enum
Jørgen Fogh

25
ฉันจะไม่เปรียบเทียบสตริงโดยใช้. toUpper () และ == โดยเฉพาะเมื่อทำงานกับสตริงที่ผู้ใช้ป้อนเข้าและแปลเป็นภาษาท้องถิ่น ตัวอย่างหนังสือโรงเรียนเรื่องนี้คือตัวอักษร "i" ของตุรกี
Adriano Repetti

4
@ABoschman ความคิดเห็นท้ายบรรทัดมีการอ้างอิงตามบรรทัดที่พวกเขาใช้งานอยู่ ฉันได้เห็นความคิดเห็นนี้ประเภทสำหรับรายละเอียดที่เรียบง่ายของรายการหลายร้อยครั้ง ...
StarWeaver

13
ในร้านค้าของเราเราทำสิ่งที่ตรงกันข้ามกับสิ่งที่แนะนำที่นี่: ชื่อ enum / const เป็นภาษาอังกฤษ (หรือสิ่งที่ผ่านเป็นภาษาอังกฤษ) และความคิดเห็นนั้นเป็น สิ่งไหนดี. มิฉะนั้นเราจะต้อง consts PAAMAYIM_NEKUDOTAYIMทั้งหมดเหล่านี้ที่มีชื่อเหมือน
sq33G

60

ภาษาอังกฤษเป็นภาษากลาง / ตัวหารร่วมที่ต่ำที่สุดด้วยเหตุผล ถึงแม้ว่าเหตุผลนั้นอ่อนแอกว่าที่ "ทุกคนทำ" แต่ก็ยังคงเป็นเหตุผลที่สำคัญ

ขัดต่อการปฏิบัติทั่วไปหมายความว่าคุณต้องเข้าใจภาษาดัตช์เพื่อให้เข้าใจโครงสร้างข้อมูลในซอฟต์แวร์เล็กน้อย ไม่มีอะไรผิดปกติกับภาษาดัตช์ แต่ความน่าจะเป็นที่วิศวกรผู้ใดก็ตามที่ต้องโต้ตอบกับรหัสฐานพูดว่ามันยังต่ำกว่าภาษาอังกฤษ

ดังนั้นถ้าคุณเป็นชาวดัตช์เท่านั้นร้านค้าและไม่ได้วางแผนที่จะขยายในระดับสากลที่เคยก็มักจะเป็นความคิดที่ดีที่จะเก็บเดียว codebase ของคุณและใช้ภาษาการเขียนโปรแกรมที่นิยมมากที่สุด

หมายเหตุ:คำแนะนำนี้ใช้กับรหัสโปรแกรมเท่านั้น ไม่ควรแปลข้อมูลผู้ใช้อย่างแน่นอน แต่ประมวลผล "ตามที่เป็น" แม้ว่าคุณจะมีลูกค้า "Goldstein" แต่คุณไม่ควรเก็บชื่อของพวกเขาไว้ในชื่อ "หินสีทอง"

ปัญหาคือว่ามีข้อตกลงอย่างต่อเนื่องระหว่าง "ผู้ใช้ไม่ได้สัมผัส" และ "ส่วนรหัสใช้ภาษาอังกฤษตลอดเวลา" ชื่อลูกค้าอยู่ใกล้กับอดีตที่สุดของสเปกตรัมตัวแปร Java ใกล้สิ้นสุดหลัง ค่าคงที่สำหรับenumค่าไกลออกไปเล็กน้อยอยู่ห่างออกไปโดยเฉพาะอย่างยิ่งถ้าพวกเขาแสดงที่รู้จักกันดีหน่วยงานภายนอกที่ไม่ซ้ำกัน (เช่นหน่วยงานของคุณ) หากทุกคนในองค์กรของคุณใช้คำศัพท์ภาษาดัตช์สำหรับแผนกคุณไม่ได้วางแผนที่จะเผชิญหน้ากับทุกคนที่มีรหัสฐานที่ไม่ได้และชุดของแผนกที่มีอยู่มีการเปลี่ยนแปลงน้อยมากจากนั้นใช้ชื่อที่ยอมรับของแผนกอาจทำให้มากขึ้น ความรู้สึกสำหรับ enum ค่าคงที่กว่าสำหรับตัวแปรท้องถิ่น ฉันยังคงไม่ทำเช่นนั้น


3
+1 โดยใช้ภาษาอังกฤษในกรณีนั้นจะให้รหัสที่สามารถอ่านได้และสามารถนำกลับมาใช้ใหม่ได้ซึ่งจะถูกเปิดเผยในคำตอบนี้ ในขณะที่ทำให้มันดัตช์ทำลายพวกเขาในทางใดทางหนึ่ง
Mikhail Churbanov

4
@Jelle ชื่อมีความหมายอย่างมีนัยสำคัญกับรหัสหรือไม่ ถ้าใช่แปลมัน - คุณต้องมีการแปลแนวคิด ถ้าไม่ทำไมคุณมีenumมัน นั่นอาจเป็นสัญญาณว่าคุณกำลังพยายามสร้างแบบจำลองข้อมูลในโค้ดซึ่งอาจเป็นแนวคิดที่ไม่ดี
Luaan

29
ฉันไม่เห็นด้วยอย่างยิ่งกับแนวคิดของการแปลคำศัพท์เฉพาะโดเมนนี้ ในบางโดเมนเช่นอุตสาหกรรมทางรถไฟอภิธานศัพท์ของภาษาที่แตกต่างกันหรือแม้แต่ดินแดนแตกต่างกันมากจนความพยายามในการแปลแม้แต่คำเดียวจะบิดเบือนความหมายมากจนคุณป้องกันไม่ให้ใครเข้าใจ จนกว่าคุณจะแน่ใจว่าโดเมนโปรแกรมที่ช่วยให้สำหรับการแปลการสูญเสียไม่ได้แปลคำศัพท์โดเมน
Rhymoid

6
ฉันยังได้ยินจากหัวหน้าโครงการของฉันว่าในโครงการอื่นผู้พัฒนาเรากำลังแปลวัตถุโดเมนบางส่วนจากดัตช์เป็นภาษาอังกฤษและมันก็ไม่ชัดเจนในภายหลังในโครงการความหมายของวัตถุเหล่านี้เนื่องจากการแปลที่กำหนดเองเหล่านี้
Jelle

4
อ่านความคิดเห็นโดย @Rhymoid และ Jelle อีกครั้ง อย่าแปลคำศัพท์โดเมนของคุณเอง! หากคุณตัดสินใจที่จะใช้คำศัพท์ภาษาอังกฤษสำหรับบุคคลที่มีชื่อดัตช์ให้แน่ใจว่าใช้คำแปลอย่างเป็นทางการไม่ใช่ของคุณเอง
Guran

15

หลีกเลี่ยงการแปลเท่าที่จะทำได้เพราะการแปลทุกครั้งเป็นความพยายามเพิ่มเติมและอาจทำให้เกิดข้อบกพร่อง

การสนับสนุนหลักของ "การออกแบบการขับเคลื่อนด้วยโดเมน" ต่อวิศวกรรมซอฟต์แวร์ที่ทันสมัยคือแนวคิดของภาษา Ubiquitousซึ่งเป็นภาษาเดียวที่ผู้ถือหุ้นทั้งหมดใช้ในโครงการ ตาม DDD การแปลไม่ควรเกิดขึ้นภายในทีม (ซึ่งรวมถึงผู้เชี่ยวชาญด้านโดเมนแม้ว่าจะปรากฏเฉพาะผ่านพรอกซีของเอกสารข้อกำหนด) แต่ระหว่างทีมเท่านั้น (อ่านเพิ่มเติม: "การออกแบบการขับเคลื่อนด้วยโดเมน" โดย Eric Evans โดยเฉพาะบท เกี่ยวกับภาษาที่แพร่หลายและการออกแบบเชิงกลยุทธ์)

นั่นคือถ้าผู้เชี่ยวชาญทางธุรกิจของคุณ (หรือเอกสารข้อกำหนดของคุณ) พูดภาษาดัตช์ให้ใช้คำศัพท์ (ดัตช์) ของพวกเขาเมื่อแสดงข้อกังวลทางธุรกิจในซอร์สโค้ด อย่าแปลเป็นภาษาอังกฤษโดยไม่จำเป็นเพราะการทำเช่นนั้นจะสร้างอุปสรรคในการสื่อสารระหว่างผู้เชี่ยวชาญทางธุรกิจและโปรแกรมเมอร์ซึ่งต้องใช้เวลาและสามารถ (ผ่านการแปลที่ไม่ชัดเจนหรือไม่ดี) ทำให้เกิดข้อบกพร่อง

หากตรงกันข้ามผู้เชี่ยวชาญธุรกิจของคุณสามารถพูดคุยเกี่ยวกับธุรกิจของพวกเขาทั้งภาษาอังกฤษและภาษาดัตช์คุณอยู่ในสถานการณ์ที่โชคดีที่สามารถเลือกภาษาที่แพร่หลายของโครงการและมีเหตุผลที่เหมาะสมสำหรับการเลือกภาษาอังกฤษ (เช่น "เข้าใจในระดับสากลและ มีแนวโน้มที่จะถูกใช้โดยมาตรฐาน ") แต่การทำเช่นนั้นไม่ได้หมายความว่าโคเดอร์ควรแปลสิ่งที่นักธุรกิจกำลังพูดถึง นักธุรกิจควรเปลี่ยนภาษา

การมีภาษาที่แพร่หลายเป็นสิ่งสำคัญอย่างยิ่งหากข้อกำหนดมีความซับซ้อนและต้องดำเนินการอย่างแม่นยำหากคุณเพียงแค่ทำ CRUD ภาษาที่คุณใช้ภายในมีความสำคัญน้อยกว่า

เรื่องเล็ก ๆ น้อยส่วนตัว: ฉันอยู่ในโครงการที่เราเปิดเผยบริการธุรกิจบางอย่างเป็นจุดสิ้นสุดของสบู่ ธุรกิจถูกระบุเป็นภาษาเยอรมันทั้งหมดและไม่น่าจะนำกลับมาใช้ใหม่เหมือนภาษาอังกฤษเนื่องจากเป็นเรื่องเกี่ยวกับกฎหมายเฉพาะสำหรับเขตอำนาจศาลเฉพาะ อย่างไรก็ตามสถาปนิกหอคอยงาช้างบางคนได้รับคำสั่งว่าอินเทอร์เฟซ SOAP เป็นภาษาอังกฤษเพื่อส่งเสริมการใช้ซ้ำในอนาคต การแปลนี้เกิดขึ้นที่เฉพาะกิจและมีการประสานงานกันเล็กน้อยในหมู่นักพัฒนา แต่เพียงอย่างเดียวอภิธานศัพท์ที่ใช้ร่วมกันส่งผลให้คำธุรกิจเดียวกันมีหลายชื่อในสัญญาบริการเว็บและเงื่อนไขทางธุรกิจบางอย่างที่มีชื่อเดียวกันในสัญญาบริการเว็บ โอ้และแน่นอนว่ามีบางชื่อที่ใช้ทั้งสองข้างของการหาร - แต่มีความหมายต่างกัน!

หากคุณเลือกที่จะแปลต่อไปโปรดทำให้การแปลเป็นมาตรฐานในอภิธานศัพท์เพิ่มการปฏิบัติตามอภิธานศัพท์นั้นกับคำจำกัดความที่คุณทำและตรวจสอบในบทวิจารณ์ของคุณ อย่าประมาทเหมือนที่เคยเป็นมา


5
ผู้เชี่ยวชาญด้านธุรกิจจะพูดภาษาอังกฤษได้ ความสามารถทางภาษาอังกฤษของผู้ที่ได้รับการฝึกอบรมภาษาดัตช์นั้นเป็น 100%
MSalters

4
การพูดภาษาอังกฤษเป็นสิ่งหนึ่ง ความสามารถในการแปลคุณภาพของคำศัพท์โดเมนดัตช์เป็นภาษาอังกฤษนั้นค่อนข้างอื่น
Guran

1
@MSalters: มีความเชี่ยวชาญในระดับใด? ในโครงการที่ฉันพูดถึงทุกคนสามารถพูดภาษาอังกฤษได้ แต่พวกเขาไม่มีความเชี่ยวชาญเทียบเท่าภาษาเยอรมัน ตัวอย่างเช่นมีวิธีการgetAdminRollที่ตรวจสอบบทบาทผู้ดูแลระบบ ... (คำภาษาเยอรมันคือ "Rolle" และพวกเขา
ทำตัว

@Guran: จริง ๆ แล้วมันมักจะเป็นวิธีอื่น: ผู้เชี่ยวชาญด้านโดเมนของคุณอาจจะเรียนไวยากรณ์ภาษาอังกฤษและมีความท้าทายในการพูดคุยเล็ก ๆ แต่พวกเขาจะรู้คำศัพท์เกี่ยวกับโดเมนเป็นภาษาอังกฤษ โปรแกรมเมอร์อาจเป็นปัญหาที่ใหญ่กว่า: โดเมนของพวกเขาคือซอฟต์แวร์ซึ่งหมายความว่าพวกเขารู้ว่าคำศัพท์นั้น แต่ไม่จำเป็นต้องเป็นคำศัพท์ทางธุรกิจ
MSalters

@meriton: ที่จริงไม่ได้เป็นเช่นข้อผิดพลาดแปลกพิจารณาว่า "กลิ้ง" เป็นคำต่อท้ายภาษาอังกฤษเช่นเงินเดือนจากฝรั่งเศสRolle โดยเฉลี่ยความคล่องแคล่วในการใช้ภาษาอังกฤษในเนเธอร์แลนด์สูงกว่าในประเทศเยอรมนี ตัวอย่างเช่น II ยังไม่คาดว่ามหาวิทยาลัยเยอรมันจะเปลี่ยนเป็นภาษาอังกฤษเป็นภาษาพูด และการส่งวิทยานิพนธ์ในภาษาเยอรมันยังถือว่าเป็นเรื่องปกติฉันคิดว่า?
MSalters

9

ทางออกที่ถูกต้องคือการไม่เขียนโค้ดของแผนกทั้งหมด:

ArrayList<String> departments = (... load them from a configuration file ...)

หรือหากคุณต้องการประเภทแผนก:

class Department { String name; Department(String name) { this.name = name; } ... }
HashMap<String, Department> = (... generate from configuration file ...)

หากคุณพบว่าจำเป็นต้องทดสอบกับแผนกเฉพาะในรหัสของคุณคุณต้องถามว่าอะไรเป็นพิเศษเกี่ยวกับแผนกนั้นและยอมรับการกำหนดค่าแผนกนั้นว่ามีคุณสมบัตินั้น ตัวอย่างเช่นหากแผนกหนึ่งมีเงินเดือนประจำสัปดาห์และนั่นคือสิ่งที่รหัสใส่ใจควรมีคุณสมบัติ WEEKLY_PAYROLL ที่สามารถแนบกับแผนกใด ๆ โดยการกำหนดค่า


นี้. จะเกิดอะไรขึ้นเมื่อการออกเดินทางถูกแยกหรือรวมกันหรือฟอร์มใหม่ รหัสนี้จะปรับให้มากขึ้นหรือน้อยลงโดยอัตโนมัติ เปลี่ยนเป็น Enum หมายความว่าคุณต้องการบิลด์ใหม่หรือจะระเบิด
jpmc26

1
นี่จะเป็นทางออกถ้าแผนกต่างๆไม่ได้มีบทบาทสำคัญในแอปพลิเคชันของเรา เรามีif (project.getDepartment().equals(Department.XYZ))ข้อความมากมาย
Jelle

@Jelle วิธีการเกี่ยวกับproject.isForDepartment("XYZ")ซึ่งจะใช้ของแดเนียล HashMap (ซึ่งถูกฉีดในโครงการหรือบางอย่าง)
SAT

2
@ SAT ที่เป็นเพียงการขอคำสะกดผิดของความซื่อสัตย์สุจริต ...
Jelle

@ เจลใช่ แต่มันสามารถจับรันไทม์ การทดสอบสามารถจับพวกเขาในเวลารวบรวมเช่นกัน ( แต่ผมเข้าใจว่าคุณมาจากและฉันทำเรียงลำดับของการยอมรับ.)
SAT

3

สำหรับคนที่สงสัยว่า: เราเลือกตัวเลือกแรกเป็นหลักเพราะเราคิดว่าคุณไม่ควรทำข้อกำหนดเพื่อการแปล อย่างไรก็ตามหากบางครั้งผู้พัฒนาระดับสากลจะทำงานในโครงการเราได้เพิ่มเอกสารประกอบเพื่ออธิบายดังนี้

/** The possible departments of a project, given in the Dutch language. */
public enum Department { BOUW, ONDERHOUD }

ดีใจที่คุณพบวิธีการที่น่าพอใจ answer คำตอบที่ยอมรับดูเหมือนจะแตกต่างจากวิธีที่คุณเลือก โปรดพิจารณาการเปลี่ยนคำตอบที่ยอมรับให้เป็นหนึ่งในคำอื่น ๆ ที่ตรงกับแนวทางที่คุณเลือก
บิชอป

ฉันเปลี่ยนคำตอบที่ยอมรับแล้ว อย่างไรก็ตามด้วยช่วงของ upvotes ฉันคิดว่ามันเป็นทางเลือกส่วนตัวและฉันเลือกวิธีนี้
Jelle

2

หากคุณกังวลเกี่ยวกับการแสดงสตริงเพื่อแสดงผู้ใช้หรือบางสิ่งบางอย่างเพียงแค่กำหนดอาร์เรย์คำอธิบายภายใน enum ของคุณและเปิดเผยวิธีการ
เช่นDepartment.BUILD.getDescription();จะส่งออก "BOUW"

public enum Department { 
    BUILD,
    MAINTENANCE;

    private String[] descriptions = new String[] {
        "BOUW",
        "ONDERHOUD"
    };

    public String getDescription() {
        return descriptions[ordinal()];
    }
}

ฉันรู้ว่าคุณเลือกเป็นอย่างอื่น แต่ในกรณีที่น้ำวนของ Google พ่นผู้คนที่นี่โดยไม่ได้ตั้งใจ

แก้ไข: ตามที่ระบุไว้โดยPokechu22คุณสามารถใช้ตัวสร้าง enum และคุณสมบัติส่วนตัวเช่นนี้:

public enum Department {
    BUILD("BOUW"),
    MAINTENANCE("ONDERHOUD");

    private final String description;

    private Department(String description) {
        this.description = description;
    }

    public String getDescription() {
        return description;
    }
}

ซึ่งจะบรรลุผลนั้น


1
คุณไม่จำเป็นต้องมีอาร์เรย์ ใน java, enums สามารถมี constructors (ส่วนตัว) และฟิลด์
Pokechu22

1
@ Pokechu22 แต่มีค่าหรือเลขลำดับที่ตัวสร้างเพื่อให้สามารถจับคู่กับคำอธิบายได้หรือไม่ ฉันหมายความว่าคุณยังคงต้องมีอาร์เรย์ภายในตัวสร้างเพื่อให้ได้คำอธิบายที่ถูกต้องใช่ไหม
SparK

1
ไม่คุณสามารถทำสิ่งนี้ได้:public enum Department { BUILD("BOUW"), MAINTENANCE("ONDERHOUD"); private final String description; private Department(String description) { this.description = description; } public String getDescription() { return description; } }
Pokechu22

@ Pokechu22 เพิ่มคำตอบแล้ว ฉันยังสังเกตเห็นว่าในกรณีที่อาร์เรย์เพิ่มขึ้นการใช้งานของฉันอาจเพิ่มขึ้น 2 บรรทัดในแต่ละครั้งในขณะที่คุณจะเพิ่ม 1 บรรทัดและจะไม่อ้างอิง
SparK

0

ค่าคงที่ของรหัสของคุณคาดว่าจะถูกระงับ หนึ่งในค่าคงที่เหล่านี้คือโปรแกรมจะไม่ทำงานแตกต่างกันเมื่อมีการเปลี่ยนชื่อตัวระบุ ในกรณีนี้โดยเฉพาะอย่างยิ่งเมื่อคุณมี enum และคุณเปลี่ยนชื่อสมาชิกใด ๆ ของ enum นั้นและอัปเดตการใช้งานทั้งหมดของสมาชิกนั้นคุณจะไม่คาดหวังว่ารหัสของคุณจะเริ่มทำงานแตกต่างกัน

การแยกเป็นกระบวนการของการอ่านข้อมูลและการได้มาซึ่งโครงสร้างข้อมูลจากมัน เมื่อคุณใช้ข้อมูลภายนอกอ่านและสร้างอินสแตนซ์ของ enum ของคุณคุณกำลังแยกวิเคราะห์ข้อมูล กระบวนการแยกวิเคราะห์นั้นเป็นเพียงส่วนหนึ่งของโปรแกรมของคุณที่รับผิดชอบในการรักษาความสัมพันธ์ระหว่างการแสดงข้อมูลที่คุณได้รับและรูปร่างและการตั้งชื่อของสมาชิกประเภทข้อมูลของคุณ

ด้วยเหตุนี้มันจึงไม่สำคัญว่าชื่อใดที่คุณกำหนดให้กับสมาชิกของ enum การที่พวกเขาเกิดขึ้นตรงกับสตริงที่ใช้ในข้อมูลที่คุณอ่านนั้นเป็นเรื่องบังเอิญ

เมื่อคุณออกแบบรหัสของคุณเพื่อสร้างแบบจำลองโดเมนชื่อของสมาชิกไม่ควรเกี่ยวข้องกับรูปแบบการทำให้เป็นอนุกรมของข้อมูล พวกเขาไม่ควรเป็นคำศัพท์ภาษาดัตช์และไม่ควรแปลคำศัพท์ภาษาดัตช์ แต่ควรเป็นสิ่งที่คุณตัดสินใจว่าเหมาะกับรูปแบบโดเมนที่ดีที่สุด

ตัวแยกวิเคราะห์กว่าแปลระหว่างรูปแบบข้อมูลและรูปแบบโดเมนของคุณ นี่คืออิทธิพลสุดท้ายที่รูปแบบข้อมูลควรมีในรหัสของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.