วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

4
การใช้ Git Stash เป็นเวิร์กโฟลว์เป็น antipattern หรือไม่
ฉันเพิ่งดูว่าฉันและทีมของฉันใช้ Git อย่างไรและเวิร์กโฟลว์ของเราทำงานอย่างไร ขณะนี้เราใช้เวิร์กโฟลว์คุณลักษณะสาขาซึ่งดูเหมือนจะทำงานได้ดี ผมเคยเห็นบางคนยังเกี่ยวกับการใช้ทีมงานของเราขึ้นอยู่กับขั้นตอนการทำงานที่ซ่อนคอมไพล์ เวิร์กโฟลว์มีลักษณะดังนี้: ทำงานในสาขาหลัก (เช่นmaster) มุ่งมั่นที่คุณไป หากคุณต้องการได้รับการเปลี่ยนแปลงหรือสลับสาขาผลักดันการเปลี่ยนแปลงที่ไม่ผูกมัดของคุณไปยังที่เก็บ เมื่ออัปเดตเสร็จแล้วให้ปิดการเปลี่ยนแปลงที่ปรากฏ ฉันควรพูดถึงว่าเวิร์กโฟลว์นี้ใช้แทนเวิร์กโฟลว์สาขาฟีเจอร์ แทนที่จะใช้สาขาและทำงานกับมันนักพัฒนาซอฟต์แวร์ที่นี่จะทำงานในสาขาเดียวและผลัก / ป๊อปออกจากสแต็กตามที่เห็นสมควร ฉันไม่คิดว่านี่เป็นกระบวนการทำงานที่ยอดเยี่ยมและการแยกสาขาจะเหมาะสมกว่าการใช้ git stash ด้วยวิธีนี้ ฉันเห็นคุณค่าของ git stash เป็นการดำเนินการฉุกเฉิน แต่ไม่ใช่สำหรับใช้ในเวิร์กโฟลว์ประจำวันปกติ การใช้ git stash เป็นประจำจะถือว่าเป็นรูปแบบการต่อต้านหรือไม่ ถ้าเป็นเช่นนั้นมีปัญหาอะไรบ้างที่อาจเกิดขึ้นได้ ถ้าไม่ได้รับประโยชน์อะไรบ้าง?

3
ทำไมถึงต้องเพิ่มพอยน์เตอร์?
ฉันเพิ่งเริ่มเรียนรู้ C ++ และเป็นคนส่วนใหญ่ (ตามสิ่งที่ฉันได้อ่าน) ฉันกำลังดิ้นรนกับพอยน์เตอร์ ไม่ใช่ในความหมายดั้งเดิมฉันเข้าใจว่าพวกเขาคืออะไรและทำไมจึงใช้และวิธีที่มีประโยชน์อย่างไร แต่ฉันไม่เข้าใจว่าตัวชี้การเพิ่มขึ้นจะมีประโยชน์ใคร ๆ สามารถให้คำอธิบายว่าการเพิ่มพอยน์เตอร์เป็นอย่างไร แนวคิดที่มีประโยชน์และสำนวน C ++? คำถามนี้เกิดขึ้นหลังจากที่ฉันเริ่มอ่านหนังสือA Tour of C ++โดย Bjarne Stroustrup ฉันแนะนำหนังสือเล่มนี้เพราะฉันค่อนข้างคุ้นเคยกับ Java และคนที่ Reddit บอกว่ามันจะเป็นหนังสือที่ 'ดีมาก' .
25 c++  c  pointers 

7
การระบุข้อเท็จจริงว่าคีย์หลักไม่ได้เป็นส่วนหนึ่งของโดเมนธุรกิจของคุณ
ในเกือบทุกกรณีคีย์หลักไม่ได้เป็นส่วนหนึ่งของโดเมนธุรกิจของคุณ แน่นอนว่าคุณอาจมีบางสิ่งที่ผู้ใช้ต้องเผชิญกับวัตถุที่มีดัชนีเฉพาะ ( UserNameสำหรับผู้ใช้หรือOrderNumberสำหรับการสั่งซื้อ) แต่โดยส่วนใหญ่แล้วธุรกิจไม่จำเป็นต้องระบุวัตถุโดเมนด้วยค่าเดียวหรือชุดของค่า ผู้ใช้งานธุรการ แม้ในกรณีพิเศษเหล่านั้นโดยเฉพาะอย่างยิ่งถ้าคุณใช้ตัวระบุที่ไม่ซ้ำกันทั่วโลก (GUID)คุณจะต้องการหรือต้องการใช้คีย์สำรองแทนการเปิดเผยคีย์หลักเอง ดังนั้นหากความเข้าใจของฉันเกี่ยวกับการออกแบบที่ขับเคลื่อนด้วยโดเมนนั้นมีความถูกต้องคีย์หลักไม่จำเป็นต้องใช้และดังนั้นจึงไม่ควรเปิดเผยและเป็นปัญหาที่ดี พวกเขาน่าเกลียดและตะคริวสไตล์ของฉัน แต่ถ้าเราเลือกที่จะไม่รวมคีย์หลักในรูปแบบโดเมนจะมีผลตามมา: อย่างไร้เดียงสาdata transfer objects (DTO)ที่ได้มาจากการรวมกันของแบบจำลองโดเมนจะไม่มีคีย์หลัก DTO ที่เข้ามาจะไม่มีคีย์หลัก ดังนั้นจะปลอดภัยหรือไม่ที่จะบอกว่าถ้าคุณบริสุทธิ์และกำจัดคีย์หลักในโมเดลโดเมนของคุณจริง ๆ คุณควรเตรียมพร้อมที่จะรับมือกับทุกคำขอในแง่ของดัชนีที่ไม่ซ้ำกันในคีย์หลักนั้น ใส่อีกวิธีหนึ่งซึ่งโซลูชั่นต่อไปนี้เป็นวิธีที่ถูกต้องในการจัดการกับการระบุวัตถุเฉพาะหลังจากลบ PK ในแบบจำลองโดเมน ความสามารถในการระบุวัตถุที่คุณต้องจัดการกับคุณลักษณะอื่น ๆ รับคีย์หลักกลับใน DTO; เช่นการกำจัด PK เมื่อทำการแมปจากการมีอยู่ไปยังโดเมนจากนั้นทำการรวม PK อีกครั้งเมื่อทำการแมปจากโดเมนไปยัง DTO แก้ไข: มาสร้างคอนกรีตกันเถอะ กล่าวว่ารูปแบบโดเมนของฉันคือVoIPProviderซึ่งรวมถึงสาขาที่ชอบName, Description, URLเช่นเดียวกับการอ้างอิงเช่นProviderType, และPhysicalAddressTransactions ตอนนี้สมมติว่าฉันต้องการสร้างบริการบนเว็บที่จะอนุญาตให้ผู้ใช้ที่มีสิทธิ์จัดการVoIPProviderได้ บางทีรหัสที่ใช้งานง่ายอาจไม่มีประโยชน์ในกรณีนี้ ท้ายที่สุดแล้วผู้ให้บริการ VoIP เป็น บริษัท ที่มีชื่อแตกต่างกันในแง่ของคอมพิวเตอร์และแตกต่างกันในแง่ของเหตุผลทางธุรกิจ ดังนั้นจึงอาจเพียงพอที่จะกล่าวได้ว่ามีความเป็นเอกลักษณ์ที่VoIPProviderถูกกำหนดโดย(Name, URL)สมบูรณ์ ดังนั้นตอนนี้สมมติว่าฉันต้องการวิธีการPUT api/providers/voipเพื่อให้ผู้ใช้ที่มีสิทธิ์สามารถอัพเดตVoIPผู้ให้บริการได้ …

1
การเขียนโปรแกรมเครือข่าย Async โดยใช้ Reactive Extensions
คำถามนี้ถูกโยกย้ายจาก Code Exchange Stack Stack เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 5 ปีที่ผ่านมา หลังจากทำการsocketเขียนโปรแกรมasync "ระดับต่ำ" บางอย่าง (มากหรือน้อย) เมื่อหลายปีก่อน (ในรูปแบบเหตุการณ์แบบ Asynchronous Pattern (EAP) ) และเมื่อเร็ว ๆ นี้ได้ย้าย "up" เป็นรูปTcpListenerแบบการเขียนโปรแกรม Asynchronous (APM)แล้ว พยายามที่จะย้ายไปที่async/await(รูปแบบอะซิงโครนัสตามรูปแบบ(TAP) ) ฉันค่อนข้างจะมีมันด้วยต้องรำคาญกับ 'ประปาในระดับต่ำ' ทั้งหมดนี้ ดังนั้นฉันจึงหา; ทำไมไม่ยอมแพ้RX( ส่วนขยายรีแอคทีฟ ) เพราะมันอาจเข้ากับโดเมนปัญหาของฉันได้ รหัสจำนวนมากที่ฉันเขียนมีให้กับไคลเอนต์จำนวนมากที่เชื่อมต่อผ่าน Tcp ไปยังแอปพลิเคชันของฉันซึ่งจะเริ่มการสื่อสารแบบสองทาง (async) ลูกค้าหรือเซิร์ฟเวอร์อาจตัดสินใจว่าจะต้องส่งข้อความและทำเช่นนั้นดังนั้นนี่ไม่ใช่request/responseการตั้งค่าแบบดั้งเดิมของคุณแต่เป็นแบบเรียลไทม์แบบสองทาง "สาย" เปิดให้ทั้งสองฝ่ายส่งสิ่งที่พวกเขาต้องการ เมื่อใดก็ตามที่พวกเขาต้องการ (หากใครมีชื่อที่เหมาะสมในการอธิบายสิ่งนี้ฉันยินดีที่จะได้ยิน!) "โปรโตคอล" …
25 c#  .net  tcp 

3
เป็นเรื่องยากที่จะตั้งชื่อคุณสมบัติ / สมาชิกเหมือนกับประเภทประกาศใน C # หรือไม่?
ตัวอย่างเช่นคลาสที่ชอบ: class Dog { } //never mind that there's nothing in it... แล้วคุณสมบัติเช่น: Dog Dog { get; set; } ฉันได้รับแจ้งว่าถ้าฉันไม่สามารถสร้างชื่อที่จินตนาการได้มากกว่านี้ฉันต้องใช้: Dog DogObject { get; set; } มีความคิดเกี่ยวกับวิธีตั้งชื่อให้ดีกว่านี้อย่างไร?
25 c#  naming  properties 

4
ภาษา C ++ ภาษาอื่น ๆ นอกเหนือจาก C?
ภาษา C ++ อนุญาตให้มีการผสมทั้ง C ++ และ C ในไฟล์ต้นฉบับหนึ่งไฟล์ ตัวอย่างเช่น, extern "C" { struct bar { /* ... */ } } C ++ หรือเคยรองรับภาษาอื่น ๆ นอกเหนือจากภาษา C หรือไม่? เช่นextern "Pascal"หรือextern "Haskell"

10
เราอยู่ได้โดยปราศจากสิ่งก่อสร้าง?
สมมติว่าด้วยเหตุผลบางอย่างวัตถุทั้งหมดจะถูกสร้างขึ้นด้วยวิธีนี้ $ obj = CLASS :: getInstance () จากนั้นเราฉีดการอ้างอิงโดยใช้ setters และทำการเริ่มต้นการเริ่มต้นโดยใช้ $ obj-> initInstance (); มีปัญหาหรือสถานการณ์จริงใดบ้างที่ไม่สามารถแก้ไขได้ถ้าเราจะไม่ใช้ตัวสร้างเลย Ps เหตุผลในการสร้างวัตถุด้วยวิธีนี้คือเราสามารถแทนที่คลาสใน getInstance () ตามกฎบางอย่าง ฉันทำงานใน PHP ถ้าเป็นเช่นนั้น

11
ทำไมโมฆะใน C หมายถึงไม่โมฆะ?
ในภาษาที่พิมพ์อย่างรุนแรงเช่น Java และ C #, void(หรือVoid) เป็นชนิดส่งคืนสำหรับวิธีการดูเหมือนจะหมายถึง: วิธีนี้จะไม่ส่งคืนสิ่งใดเลย ไม่มีอะไร ไม่มีการส่งคืน คุณจะไม่ได้รับอะไรจากวิธีนี้ สิ่งที่แปลกจริงๆคือใน C voidเป็นชนิดส่งคืนหรือเป็นชนิดพารามิเตอร์ method หมายความว่า: มันอาจเป็นอะไรก็ได้ คุณต้องอ่านซอร์สโค้ดเพื่อค้นหา โชคดี. หากเป็นตัวชี้คุณควรรู้ว่าคุณกำลังทำอะไรอยู่ ลองพิจารณาตัวอย่างต่อไปนี้ใน C: void describe(void *thing) { Object *obj = thing; printf("%s.\n", obj->description); } void *move(void *location, Direction direction) { void *next = NULL; // logic! return next; } เห็นได้ชัดว่าวิธีที่สองส่งกลับตัวชี้ซึ่งโดยความหมายอาจเป็นอะไรก็ได้ เนื่องจาก …
25 c  pointers 

12
ส่วน 'ในที่สุด' ของ 'ลอง ... จับได้ ... ในที่สุด' สร้างความจำเป็นหรือไม่
บางภาษา (เช่น C ++ และ PHP เวอร์ชันก่อนหน้า) ไม่รองรับfinallyส่วนของtry ... catch ... finallyโครงสร้าง คือfinallyเคยจำเป็น? เพราะรหัสในมันทำงานอยู่เสมอทำไมฉันจะไม่ / ไม่ควรวางรหัสนั้นหลังจากtry ... catchบล็อกโดยไม่มีส่วนfinallyคำสั่ง? ทำไมต้องใช้ (ฉันกำลังมองหาเหตุผล / แรงบันดาลใจสำหรับการใช้ / ไม่ใช้finallyไม่ใช่เหตุผลที่ต้องทำ 'จับ' หรือทำไมการทำเช่นนั้นถูกกฎหมาย)

10
การออกแบบ API: แนวทางที่เป็นรูปธรรมและเป็นนามธรรม - แนวทางปฏิบัติที่ดีที่สุด
เมื่อพูดคุยเกี่ยวกับ API ระหว่างระบบ (ในระดับธุรกิจ) มักจะมีมุมมองที่แตกต่างกันสองประการในทีมของเรา: บางคนชอบมากกว่า - ให้พูดว่า - วิธีนามธรรมทั่วไป ตัวอย่าง: การออกแบบ API ค้นหา "บุคคล" แบบง่าย รุ่นที่เป็นรูปธรรมจะเป็น searchPerson(String name, boolean soundEx, String firstName, boolean soundEx, String dateOfBirth) คนที่ชื่นชอบเวอร์ชั่นคอนกรีตพูดว่า: API คือการจัดทำเอกสารด้วยตนเอง มันง่ายที่จะเข้าใจ มันง่ายต่อการตรวจสอบ (คอมไพเลอร์หรือเป็นเว็บเซอร์: การตรวจสอบสคีมา) จูบ กลุ่มคนอื่น ๆ ในทีมของเราจะพูดว่า "นั่นเป็นเพียงรายการของเกณฑ์การค้นหา" searchPerson(List<SearchCriteria> criteria) กับ SearchCritera { String parameter, String value, Map<String, String> …

3
ตกลงเพื่อส่งคืน HTML จาก JSON API หรือไม่
ในโครงการปัจจุบันของฉันฉันรับผิดชอบการใช้งานบริการที่เกี่ยวข้องกับการใช้ RESTful APIs ที่สร้างขึ้นใหม่ซึ่งบันทึกไว้ว่ารองรับ JSON เท่านั้น ลูกค้าทำการร้องขออย่างต่อเนื่องโดยมีส่วนหัวการยอมรับของ 'application / json' และประเภทเนื้อหาของ 'application / json' อย่างไรก็ตามปลายทางบางจุดส่งการตอบกลับด้วย HTML ชนิดเนื้อหาหรือแม้แต่เนื้อหา HTML สำหรับฉันนี่เป็นแนวทางที่ผิดอย่างชัดเจนและไม่สามารถพิสูจน์ได้ ตลอดโครงการนี้มีการใช้วิธีปฏิบัติเดียวกันนี้กับผู้ขายที่ต่างกันสองรายและบริการที่แตกต่างกันสองรายการ ฉันพบว่าตัวเองต้องพิสูจน์เหตุผลที่บริการที่จำเป็นต้องมีการเปลี่ยนแปลง ผู้ขายระบุว่าลูกค้าควรรับมือกับสิ่งนี้และแม้แต่ห้องสมุด REST ที่ฉันเลือกก็ถูกตั้งคำถาม (RestEasy) เพราะไม่ได้จัดการกับสิ่งนี้ตามค่าเริ่มต้น 'นอกกรอบ' นี่เป็นจุดสำคัญของความยุ่งยาก ฉันไม่พบการอ้างอิงจำนวนมากเพื่อสำรองอาร์กิวเมนต์ของฉันฉันคิดว่านี่เป็นเพราะประเด็นนั้นเป็นที่สงสัยเนื่องจากมันชัดเจนมาก คำถามคือฉันหายไปบางอย่าง? ฉันเป็นคนหยาบคายเกี่ยวกับเรื่องนี้หรือไม่? ตกลงหรือไม่ที่จะมี JSON API ที่ไม่มีประเภทแอปพลิเคชัน / json ในสถานการณ์นี้ การอ้างอิงจะได้รับการชื่นชม คุณจะแก้ไขสถานการณ์นี้จากมุมมองทางการค้าได้อย่างไร

5
เหตุใดการเขียนบางสิ่งในภาษา X จึงไม่ดีราวกับว่าคุณกำลังเขียนโปรแกรมในภาษา Y ในแง่ของการใช้กระบวนทัศน์การเข้ารหัสที่ใช้ร่วมกัน [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ไม่นานมานี้ฉันถามคำถามเกี่ยวกับ SO เกี่ยวกับสิ่งที่เขียนใน C ++ แต่แทนที่จะได้รับคำตอบสำหรับปัญหาที่เกิดขึ้นความคิดเห็นต่าง ๆ ก็บ้าไปตามสไตล์การเขียนโค้ดของฉันแม้ว่าฉันจะระบุว่ามันเป็นรหัสWIPและฉันตั้งใจจะล้างมันในภายหลังเมื่อฉันใช้เคสพื้นฐาน (ฉันได้รับคะแนนเสียงลงมากที่ฉันตัดสินใจที่จะดึงคำถามเนื่องจากตัวแทนของฉันดังนั้นแล้วอยู่ใกล้สุดซึ้ง) มันทำให้ฉันสงสัยว่าทำไมผู้คนถึงยอมรับทัศนคติที่ว่า "คุณเป็นโนบ ฉันถูกกล่าวหาว่าเขียน C ++ เหมือนกับว่าเป็น Java สิ่งที่ฉันไม่เข้าใจและยังทำให้ฉันงุนงง ฉันได้รับการเขียนโปรแกรมในภาษา OOP ไม่กี่ปีที่ผ่านมาในขณะนี้แม้ในช่วงเวลา ฉันเลือกภาษาที่จะใช้ในแง่ของไลบรารีที่มีอยู่และสภาพแวดล้อมการดำเนินการที่ดีที่สุดสำหรับงานในมือ ฉันนำรูปแบบการออกแบบมาใช้ในรหัส OOP และฉันค่อนข้างมั่นใจว่าการใช้รูปแบบของฉันนั้นฟังดูดีและ OO ที่ชาญฉลาดฉันสามารถมีรูปแบบของตัวเองได้ ฉันเข้าใจกล่องเครื่องมือของ OOP แต่เลือกที่จะใช้เครื่องมือเฉพาะเมื่อฉันคิดว่าเป็นสิ่งจำเป็นจริงๆไม่ใช่เพื่อใช้เคล็ดลับที่ประณีตเพื่อแสดงการเข้ารหัสของฉัน (ซึ่งฉันรู้ว่าไม่ใช่รอยบนสุด แต่ฉันคิดว่าไม่อยู่ในระดับ n00b เช่นกัน) ฉันออกแบบรหัสของฉันก่อนที่ฉันจะเขียนบรรทัดเดียว ในการกำหนดการทดสอบฉันทำรายการเป้าหมายของชั้นเรียนหนึ่ง ๆ และเกณฑ์การทดสอบที่ต้องปฏิบัติตาม เพราะฉันจะสร้างไดอะแกรมลำดับและเขียนรหัสได้ง่ายขึ้นฉันเลือกที่จะเขียนการทดสอบหลังจากที่อินเทอร์เฟซกลายเป็นที่ชัดเจน ฉันต้องยอมรับว่าในส่วนของรหัสที่ฉันโพสต์ในคำถามฉันยังคงใช้พอยน์เตอร์แทนการใช้สมาร์ทพอยน์เตอร์ ฉันใช้ RAII ทุกครั้งที่ทำได้ ฉันรู้ว่า …

4
ทำไม Java ไม่ใช้การห่อหุ้มด้วยคลาสบางคลาส?
คำถามของฉันเกี่ยวข้องกับSystem.inและSystem.outชั้นเรียน (อาจมีคนอื่น ๆ เช่นที่อยู่ในไลบรารีมาตรฐาน) ทำไมถึงเป็นอย่างนั้น? นั่นเป็นวิธีปฏิบัติที่ไม่ดีใน OOP ใช่หรือไม่ ไม่ควรใช้เช่น: System.getIn()และSystem.getOut()? ฉันมีคำถามนี้มาตลอดและหวังว่าฉันจะหาคำตอบที่ดีได้ที่นี่

2
อะไรคือความแตกต่างของเนื้อหาระหว่างวิทยานิพนธ์ของคริสโอกาซากิในปี 1996 และหนังสือ 1999, โครงสร้างข้อมูลที่ใช้งานได้อย่างแท้จริง? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการ4 ปีที่แล้ว ฉันต้องการอ่านโครงสร้างข้อมูลที่ทำงานได้อย่างหมดจด ฉันได้พบวิทยานิพนธ์ (ซึ่งสามารถใช้งานได้อย่างอิสระในรูปแบบ PDF)แต่เห็นว่ามีหนังสือเล่มหนึ่งให้ด้วย ดังนั้นฉันอยากรู้ว่าอะไรคือความแตกต่างระหว่างสองสิ่งพิมพ์นี้

1
คำอธิบายเล็ก ๆ น้อย ๆ เกี่ยวกับ DOM
ฉันพยายามเข้าใจ DOM และแม้ว่าฉันจะมีความคิดที่เป็นธรรมว่ามันคืออะไรมีบางอย่างที่ฉันไม่สามารถปักหมุดได้ ฉันจะเขียนสิ่งที่ฉันคิดว่า DOM เป็นและคำถามของฉันจะเป็นแบบอินไลน์ DOM เป็นการนำเสนอเชิงวัตถุอย่างเต็มรูปแบบของหน้าเว็บ มาตรฐาน W3C DOM เป็นพื้นฐานของ DOM ที่นำมาใช้ในเบราว์เซอร์ที่ทันสมัยที่สุด ดังนั้น DOM พูดคุยเกี่ยวกับวิธีแสดงเอกสาร XML / HTML เป็นแบบจำลองวัตถุได้อย่างไร DOM ไม่ได้ระบุว่าเอกสารจะต้องนำไปใช้เป็นต้นไม้หรือดงผลไม้และไม่ได้ระบุว่าจะนำความสัมพันธ์ระหว่างวัตถุมาใช้อย่างไร สามารถแสดงเอกสารในรูปแบบอื่นได้อย่างไร? เมื่อคุณทำอะไรเช่นนี้ - document.write('welcome to my home page!'); วัตถุเอกสารให้บริการโดย DOM วิธีการเขียนเป็นอินเตอร์เฟสที่เปิดเผยกับ JavaScript โดย DOM ดังนั้นวัตถุและวิธีการจะถูกสร้างเป็นวัตถุ JavaScript โดย parser DOM แล้วนำเสนอให้กับเครื่องมือ JavaScript? หรือวัตถุและวิธีการภายในเครื่องมือแยกวิเคราะห์ DOM เป็นภาษาของตนเองหรือไม่ และสัมผัสกับเครื่องมือ JavaScript หรือไม่ …
25 javascript  dom 

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