คำถามติดแท็ก refactoring

การปรับโครงสร้างใหม่เป็นเทคนิคที่มีระเบียบวินัยในการปรับโครงสร้างโค้ดที่มีอยู่โดยปรับเปลี่ยนโครงสร้างภายในโดยไม่เปลี่ยนพฤติกรรมภายนอก คำถามปลายเปิดเกี่ยวกับการปรับโครงสร้างโค้ดของคุณนั้นไม่ตรงประเด็นสำหรับ Stack Overflow อย่างไรก็ตามคำถามเหล่านี้อาจเหมาะสมสำหรับการตรวจสอบโค้ด

14
วิธีการสามารถทำให้คงที่ แต่ควร?
Resharper ชอบที่จะชี้ให้เห็นถึงฟังก์ชั่นหลาย ๆ ต่อหน้า asp.net ที่สามารถทำให้คงที่ มันช่วยฉันได้ไหมถ้าฉันทำให้มันคงที่? ฉันควรทำให้พวกเขาคงที่และย้ายไปยังคลาสยูทิลิตี้?

2
จะใช้ IntelliJ IDEA เพื่อค้นหารหัสที่ไม่ได้ใช้ทั้งหมดได้อย่างไร
เมื่อฉันอยู่ในไฟล์. java รหัสที่ไม่ได้ใช้มักจะเป็นสีเทาหรือมีขีดเส้นใต้สีเขียวบอกว่ารหัสนี้อาจจะเป็นไปได้ (อาจเป็นเพราะมีบางกรณี JNI / Reflection corner แปลก ๆ ) ที่ไม่ได้ใช้ แต่ฉันมีโครงการนี้ที่มีไฟล์ Java นับพันไฟล์และฉันต้องการค้นหารหัสทั้งหมดที่ไม่ได้ใช้ซึ่งอาจเป็นไปได้ทั้งหมด ฉันจะทำสิ่งนั้นใน IntelliJ IDEA ได้อย่างไร

21
วิธีค้นหารหัสที่ไม่ได้ใช้ / ไม่ได้ใช้ในโครงการ Java [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน6 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ เครื่องมือใดที่คุณใช้เพื่อค้นหาโค้ดที่ไม่ได้ใช้ / ไม่ใช้ในโครงการ java ขนาดใหญ่ ผลิตภัณฑ์ของเราพัฒนามาหลายปีแล้วและมันก็ยากที่จะตรวจจับโค้ดด้วยตนเองที่ไม่ได้ใช้งานอีกต่อไป อย่างไรก็ตามเราพยายามลบรหัสที่ไม่ได้ใช้มากที่สุดเท่าที่จะทำได้ ข้อเสนอแนะสำหรับกลยุทธ์ / เทคนิคทั่วไป (นอกเหนือจากเครื่องมือเฉพาะ) ก็มีค่าเช่นกัน แก้ไข:โปรดทราบว่าเราได้ใช้เครื่องมือครอบคลุมรหัส (Clover, IntelliJ) แล้ว แต่สิ่งเหล่านี้เป็นความช่วยเหลือเล็กน้อย รหัสที่ตายแล้วยังคงมีการทดสอบหน่วยและปรากฏขึ้นตามที่ครอบคลุม ฉันเดาว่าเครื่องมือในอุดมคติจะระบุกลุ่มของรหัสที่มีรหัสอื่นน้อยมากขึ้นอยู่กับมันทำให้สามารถตรวจสอบเอกสารด้วยตนเองได้

19
กำลังตรวจจับ #includes ที่ฟุ่มเฟือยใน C / C ++?
ฉันมักจะพบว่าส่วนหัวของไฟล์มีขนาดใหญ่ขึ้นเรื่อย ๆ ตลอดเวลา แต่ก็ไม่เคยเล็กลง ตลอดอายุการใช้งานของคลาสไฟล์ต้นฉบับอาจมีการย้ายและถูกปรับโครงสร้างใหม่และเป็นไปได้มากที่มีจำนวนไม่มาก#includesที่ไม่จำเป็นต้องอยู่ที่นั่นอีกต่อไป ปล่อยให้พวกเขามีเพียงเวลาในการรวบรวมและเพิ่มการพึ่งพาการรวบรวมที่ไม่จำเป็น การพยายามคิดให้ได้ว่าอะไรที่ยังต้องการอยู่นั้นค่อนข้างน่าเบื่อ มีเครื่องมือบางชนิดที่สามารถตรวจจับคำสั่ง #include ที่ฟุ่มเฟือยและแนะนำเครื่องมือที่ฉันสามารถลบได้อย่างปลอดภัยหรือไม่? ผ้าสำลีทำสิ่งนี้ได้ไหม?

10
ค้นหาและแทนที่สตูดิโอ Android
มีวิธีในการค้นหาและแทนที่คำที่เกิดขึ้นทั้งหมดในโครงการทั้งหมด (ไม่ใช่แค่คลาสเดียวที่ใช้ refactor -> เปลี่ยนชื่อ) และยังคงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ใน android studio หรือใช้สคริปต์บรรทัดคำสั่งหรือไม่ ตัวอย่างเช่นซัพพลายเออร์จะต้องไปที่ผู้ขายผู้ขาย -> ผู้ค้าผู้จัดหา -> ผู้ค้า เจ้านายของฉันต้องการให้ฉันเปลี่ยนอินสแตนซ์ของผู้จัดหาทั้งหมดกับผู้ขายสำหรับโครงการที่กำลังทำงาน ฉันทำมาแล้วประมาณหนึ่งชั่วโมงและฉันรู้ว่าฉันต้องเสียเวลา แจ้งให้เราทราบข้อเสนอแนะการประหยัดเวลา

9
ค้นหารหัสที่ไม่ได้ใช้ [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ ฉันต้องปรับแอปพลิเคชัน C # ให้ใหญ่อีกครั้งและฉันพบว่ามีฟังก์ชั่นมากมายที่ไม่เคยใช้ ฉันจะตรวจสอบโค้ดที่ไม่ได้ใช้งานได้อย่างไรเพื่อให้สามารถลบฟังก์ชั่นที่ไม่ได้ใช้ทั้งหมดได้?
208 c#  .net  refactoring 

9
ReSharper มีทางเลือกอะไรบ้าง? [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันกำลังพิจารณาซื้อใบอนุญาตReSharperแต่มีทางเลือกอื่นที่เป็นไปได้สำหรับ ReSharper และคุณจะให้คะแนนเหล่านี้เมื่อเทียบกับ ReSharper อย่างไร ไม่จำเป็นต้องเป็นทางเลือกฟรี แต่ฉันแค่อยากจะรู้ว่าผลิตภัณฑ์ที่เทียบเท่าที่ดีคืออะไร

19
มีเครื่องมือการรีแฟคเตอร์ C ++ ที่ใช้งานได้หรือไม่ [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน6 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ ไม่มีใครรู้ว่าเครื่องมือ refactoring ที่โดดเด่นอย่างสมบูรณ์สำหรับ C ++ ที่ทำงานได้อย่างน่าเชื่อถือกับฐานรหัสขนาดใหญ่ (ประมาณ 100,000 บรรทัด) ฉันลองอะไรก็ได้ที่ฉันสามารถหาได้ซ้ำแล้วซ้ำอีกในช่วงหลายปีที่ผ่านมา: SlickEdit, Eclipse CDT พวกเขาทั้งหมดไม่สามารถใช้งานได้เลย สรุป : ฉันใช้เวลาและประเมินผล "Visual Assist X" เช่นเดียวกับ "Refactor for C ++" ทั้งคู่มีคุณสมบัติที่น่าประทับใจ แต่ทั้งคู่ก็ยังห่างไกลจากความสมบูรณ์แบบ การแยกรหัสขนาดใหญ่มักไม่ได้รับการแก้ไขหากไม่มีการแก้ไขด้วยตนเอง - ดังนั้นจึงไม่ได้ผล "Visual Assist X" มีคุณสมบัติที่ดีเช่นการเติมข้อความอัตโนมัติที่สมบูรณ์มากขึ้น ฯลฯ แต่มันนำไปสู่การกะพริบมากและช้าลงมากในบางจุด โดยความเห็นของฉันดังนั้นคำตอบคือ: "ไม่ไม่มีเครื่องมือการเตรียมการผลิตใหม่สำหรับ C ++" …
161 c++  refactoring 

30
ใน. vimrc ของคุณคืออะไร [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องการอภิปรายการโต้แย้งการหยั่งเสียงหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ Vi และ Vim อนุญาตให้มีการปรับแต่งที่ยอดเยี่ยมจริงๆโดยทั่วไปแล้วจะเก็บไว้ใน.vimrcไฟล์ คุณสมบัติทั่วไปสำหรับโปรแกรมเมอร์คือการเน้นไวยากรณ์, การเยื้องแบบอัจฉริยะและอื่น ๆ คุณมีเทคนิคอื่นใดสำหรับการเขียนโปรแกรมเชิงสร้างสรรค์ที่ซ่อนอยู่ใน. vimrc ของคุณหรือไม่ ฉันส่วนใหญ่สนใจใน refactorings คลาสรถยนต์และมาโครการผลิตที่คล้ายกันโดยเฉพาะอย่างยิ่งสำหรับ C #
157 vim  refactoring 

17
วิธีการทำให้การติดตั้ง comparTo ปลอดภัยเป็นโมฆะง่ายขึ้น?
ฉันใช้compareTo()วิธีการสำหรับชั้นเรียนอย่างง่ายเช่นนี้ (เพื่อให้สามารถใช้Collections.sort()และสินค้าอื่น ๆ ที่เสนอโดยแพลตฟอร์ม Java): public class Metadata implements Comparable<Metadata> { private String name; private String value; // Imagine basic constructor and accessors here // Irrelevant parts omitted } ฉันต้องการลำดับธรรมชาติสำหรับวัตถุเหล่านี้จะเป็น: 1) เรียงตามชื่อและ 2) เรียงตามค่าถ้าชื่อเหมือนกัน; การเปรียบเทียบทั้งสองควรคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ สำหรับเขตข้อมูลทั้งสองค่าเป็นที่ยอมรับอย่างสมบูรณ์ดังนั้นcompareToจะต้องไม่หยุดในกรณีเหล่านี้ วิธีแก้ปัญหาที่ควรคำนึงถึงนั้นเป็นไปตามลำดับต่อไปนี้ (ฉันใช้ "คำสั่งป้องกัน" ที่นี่ในขณะที่คนอื่น ๆ อาจต้องการจุดส่งคืนเดียว แต่นั่นอยู่ด้านข้าง) // primarily by name, secondarily by value; …

22
การทดสอบหน่วยสำหรับรหัส C ++ - เครื่องมือและระเบียบวิธี [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ ฉันกำลังทำงานกับระบบ c ++ ขนาดใหญ่ที่อยู่ระหว่างการพัฒนามาสองสามปีแล้ว ในฐานะที่เป็นส่วนหนึ่งของความพยายามในการปรับปรุงคุณภาพของโค้ดที่มีอยู่เราจึงมีส่วนร่วมในโครงการปรับโครงสร้างระยะยาวขนาดใหญ่ คุณรู้จักเครื่องมือที่ดีที่สามารถช่วยฉันเขียนการทดสอบหน่วยใน C ++ ได้หรือไม่? อาจจะคล้ายกับ Junit หรือ Nunit? ใครสามารถให้คำแนะนำที่ดีเกี่ยวกับวิธีการเขียนการทดสอบหน่วยสำหรับโมดูลที่เขียนโดยไม่คำนึงถึงการทดสอบหน่วย

24
ฟังก์ชั่นยาวเกินไปเมื่อไหร่? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องการอภิปรายการโต้แย้งการหยั่งเสียงหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา 35 เส้น, 55 เส้น, 100 บรรทัด, 300 บรรทัด? เมื่อไหร่ที่คุณควรเริ่มแยกมันออกจากกัน? ฉันถามเพราะฉันมีฟังก์ชั่นที่มี 60 บรรทัด (รวมถึงความคิดเห็น) และกำลังคิดที่จะแยกมันออกจากกัน long_function(){ ... } เป็น: small_function_1(){...} small_function_2(){...} small_function_3(){...} ฟังก์ชั่นจะไม่ถูกใช้นอก long_function ทำให้ฟังก์ชั่นที่เล็กลงหมายถึงการเรียกใช้ฟังก์ชั่นอื่น ๆ อีกมากมาย เมื่อไหร่ที่คุณจะแยกฟังก์ชั่นออกเป็นฟังก์ชันย่อย ๆ ? ทำไม? วิธีการควรทำสิ่งเดียวที่เป็นตรรกะ (คิดเกี่ยวกับการทำงาน) คุณควรจะสามารถอธิบายวิธีการในประโยคเดียว ควรพอดีกับความสูงของจอแสดงผลของคุณ หลีกเลี่ยงค่าใช้จ่ายที่ไม่จำเป็น (ความคิดเห็นที่ชี้ให้เห็นอย่างชัดเจน ... ) การทดสอบหน่วยง่ายขึ้นสำหรับฟังก์ชันตรรกะขนาดเล็ก ตรวจสอบว่าส่วนหนึ่งของฟังก์ชั่นสามารถนำมาใช้ใหม่โดยชั้นเรียนหรือวิธีการอื่น ๆ หลีกเลี่ยงการมีเพศสัมพันธ์ระหว่างคลาสมากเกินไป …

3
การเข้ารหัส Katas สำหรับฝึกการปรับโครงสร้างของรหัสเดิม
ฉันค่อนข้างสนใจในการเข้ารหัส katas ในช่วงไม่กี่เดือนที่ผ่านมา ฉันเชื่อว่านี่เป็นวิธีที่ดีในการฝึกฝนทักษะการเขียนโปรแกรมและปรับปรุงคุณภาพของโค้ดที่ฉันเขียนในงาน มีสถานที่มากมายที่สามารถพบ Katas ได้ ชอบ.. http://codekata.pragprog.com/ http://schuchert.wikispaces.com/Katas http://www.codingdojo.org/ ฉันพบว่าสิ่งเหล่านี้เป็นที่เก็บข้อมูลที่ยอดเยี่ยมของ Katas ... ความพยายามของฉันในบางส่วนได้รับผลตอบแทนอย่างมาก อย่างไรก็ตามฉันรู้สึกว่า Kata ทั้งหมดที่ฉันเห็นจนถึงตอนนี้มีเพียงช่วงเวลาสั้น ๆ ดูเหมือนจะไม่มีใครอนุญาตให้ฉันฝึกฝนการปรับโครงสร้างโค้ดที่ไม่ดี เป็นการเรียนรู้วิธีการเขียนโค้ดใหม่ ๆ เป็นครั้งแรก ... แต่ในงานปัจจุบันของฉันฉันไม่มีโอกาสเขียนโค้ดใหม่มากเกินไป แต่ฉันมักจะต่อสู้กับรหัสเดิมและพยายามหาวิธี refactor โมดูลกำจัดการพึ่งพาและลดการมีเพศสัมพันธ์ ด้วยเหตุนี้ฉันจึงมองหา Katas สองสามตัวที่ฉันสามารถใช้เพื่อฝึกฝนทักษะในการปรับโครงสร้างโค้ดเดิมและเปลี่ยนเป็นรหัสที่สะอาด มีใครรู้บ้างว่ามีอยู่แล้ว? ฉันรู้ว่าฉันได้รับการฝึกฝนมากมายในขณะที่ฉันทำงาน ... แต่ฉันต้องการฝึกฝนทักษะของฉันจนถึงจุดที่ฉันสามารถดูวิธีแยกการพึ่งพาและแยกความกังวลในชั้นเรียนได้อย่างรวดเร็ว ทำมากเกินไป

2
การใช้ส่วนผสมและส่วนประกอบสำหรับการใช้โค้ดซ้ำใน Facebook React
ฉันเริ่มใช้ Facebook React ในโครงการ Backbone และจนถึงตอนนี้มันก็ไปได้ดี อย่างไรก็ตามฉันสังเกตเห็นความซ้ำซ้อนบางอย่างที่คืบคลานเข้ามาในรหัสการตอบสนองของฉัน ยกตัวอย่างเช่นผมมีวิดเจ็ตแบบฟอร์มเหมือนหลายกับรัฐชอบINITIAL, และSENDING SENTเมื่อกดปุ่มฟอร์มจะต้องได้รับการตรวจสอบความถูกต้องมีการร้องขอและจากนั้นสถานะจะถูกอัพเดต สถานะถูกเก็บไว้ใน React this.stateแน่นอนพร้อมกับค่าฟิลด์ ถ้าสิ่งเหล่านี้เป็นมุมมอง Backbone ฉันจะดึงคลาสพื้นฐานที่เรียกว่าFormViewแต่ความประทับใจของฉันคือ React ไม่รับรองหรือสนับสนุนคลาสย่อยเพื่อแชร์ตรรกะมุมมอง (แก้ไขฉันถ้าฉันผิด) ฉันเคยเห็นสองวิธีในการใช้โค้ดซ้ำใน React: Mixins (เช่นLinkedStateMixinที่มาพร้อมกับ React); ส่วนประกอบของคอนเทนเนอร์ (เช่นreact-infinite-scroll ) ฉันถูกต้องหรือไม่ที่ mixins และ container ต้องการสืบทอดใน React? นี่เป็นการตัดสินใจออกแบบโดยเจตนาหรือไม่? การใช้มิกซ์อินหรือส่วนประกอบคอนเทนเนอร์สำหรับตัวอย่าง "วิดเจ็ตฟอร์ม" จากย่อหน้าที่สองเหมาะสมกว่าไหม และนี่ก็เป็นส่วนสำคัญที่มีFeedbackWidgetและJoinWidgetอยู่ในสภาพปัจจุบันของพวกเขา พวกเขามีโครงสร้างที่คล้ายกันbeginSendวิธีการที่คล้ายกันและทั้งสองจะต้องมีการสนับสนุนการตรวจสอบความถูกต้อง (ยังไม่มี)


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