Có phải là một thực tế xấu khi cung cấp hai tệp rất khác nhau có cùng mục đích chung cùng tên?


18

Có phải là một thực tế xấu khi cung cấp hai tệp rất khác nhau có cùng mục đích chung cùng tên, tách chúng thành các thư mục khác nhau?

<script src="client_scripts/app/player_stats/generator.js"></script>
<script src="client_scripts/app/coach_settings/generator.js"></script>

Tôi muốn giữ tên tệp của mình ngắn và cả hai tệp có cùng mục đích chung mà không giống nhau. Tôi không chắc liệu điều này có được coi là một thực tiễn xấu trong môi trường lập trình chuyên nghiệp hay không. Tôi muốn biết thực hành tốt nhất là gì trong tình huống này.

Ngoài ra, với chi phí cho độ dài ngắn của tên, tôi có thể sử dụng:

<script src="client_scripts/app/player_stats/player_stats_generator.js"></script>
<script src="client_scripts/app/coach_settings/coach_settings_generator.js"></script>

7
Tên dài hơn! :)
marko

2
statsgen.js,settingsgen.js
Kroltan

1
KHÔ! (tức là tên ngắn hơn)
Paul Draper

1
Clean Code (tức là tên có ý nghĩa dài hơn)
Songo

Câu trả lời:


36

Xem xét tỷ lệ chi phí / lợi ích của hai lựa chọn của bạn:

  1. Việc sử dụng lại cùng tên sẽ gây nhầm lẫn hoặc đặt tên xung đột? Có lẽ là không, vì chúng nằm trong các thư mục khác nhau. Tên "player_stats / Generator.js" tương đương với "player_stats_generator.js". Tuy nhiên, nếu bạn thấy, trong tương lai, một lý do để hợp nhất các tệp js của bạn vào một thư mục duy nhất (triển khai? Tôi không biết), thì đây sẽ là một chỉ báo tốt để đặt tên duy nhất.

  2. Sử dụng tên dài hơn có liên quan đến nhiều kiểu gõ không liên quan? Chắc là không. Không chỉ có nhiều tên tệp JS IDE tự động hoàn thành trong dự án cho bạn, nó còn là một đoạn mã có lẽ chỉ được viết - nhiều nhất - một lần cho mỗi tệp. Mã được gõ rất nhiều là các lớp và hàm bên trong các tệp js và những mã đó (hy vọng) không xung đột.

  3. Khi gỡ lỗi, bạn nhận được thông tin gì về một lỗi? Nếu báo cáo lỗi phổ biến nhất là "Lỗi trong dòng 34 của <filename.js>", thì hãy xem xét việc đặt cho chúng các tên duy nhất, vì nhận được lỗi trong chỉ bộ tạo.js và sau đó cố gắng thần thánh, thông qua ngữ cảnh, nó có thể gây rắc rối.


5
Gỡ lỗi js thường in toàn bộ đường dẫn tập tin.
Bergi

1
@Bergi Điều đó phụ thuộc vào trình duyệt (và phiên bản), IDE (nếu có), khung ghi nhật ký lỗi, v.v.
Avner Shahar-Kashtan

22

Giống như một vấn đề thực tế, nếu IDE của bạn hiển thị tên tệp trong các tab, nếu bạn sử dụng cùng tên cho mỗi tệp, bạn sẽ kết thúc với các tab hiển thị cùng tên. Điều đó có thể rất khó chịu. Một dự án tôi đã tiếp tục duy trì có vấn đề đó và thật khó khăn khi mở 15 tab, một nửa trong số đó có cùng tên tệp.

Vì vậy, ... sử dụng tên mô tả nhiều hơn.


1
Hầu hết các trình soạn thảo văn bản hiện đại sẽ hiển thị đường dẫn trong tab nếu các tệp có cùng tên.
kmiyashiro

Tất nhiên, đôi khi cần nhiều tệp có cùng tên [ví dụ: trên nhiều máy chủ index.html]. Tôi thấy khó chịu với các chương trình gây khó khăn cho việc xác định đường dẫn liên quan đến một tệp cụ thể.
supercat

1
@kmiyashiro - có lẽ là như vậy, nhưng nếu bạn mở nhiều tệp, các tab có thể bị giảm kích thước (chiều rộng) đến mức bạn hầu như chỉ nhìn thấy tên tệp. Sau đó, bạn phải luôn di chuột qua từng tab và đợi "tooltip" hiển thị đường dẫn / tệp đầy đủ. Nếu bạn chỉ mở một vài tệp và chỉ trường hợp hiếm hoi của tên trùng lặp, có thể chấp nhận được. Nhưng với rất nhiều tập tin, nó có thể rất khó chịu.
Kevin Fegan

1
Nếu bạn có nhiều tab mở tất cả có cùng tên, tôi sẽ chuyển sang tệp bằng lệnh chính thay vì cố gắng tìm nó giữa một biển các tab ngay cả với các tên duy nhất.
kmiyashiro

1
Sử dụng tên mô tả nhiều hơn có thể khá khó chịu mặc dù ... khi bạn some_super_long_descriptor_that_needs_more_description.jsphải đặt nó ngoàisome_super_long_descriptor_that_needs_more_cowbell.js
corsiKa

12

Có một yếu tố quyết định rõ ràng ở đây: DRY (Đừng lặp lại chính mình).

Mỗi tên tệp không phải khác nhau; đó là những gì con đường dành cho . Bạn có thể tưởng tượng có bao nhiêu tệp hệ thống hoặc chương trình khác nhau trên máy tính của bạn không? Điều gì xảy ra nếu mỗi người trong số họ phải có một tên duy nhất? Tại một số điểm, chúng tôi chỉ làm cho tên tệp là bản sao của đường dẫn.

Nếu mô tả tốt nhất về tệp Javascript trong ngữ cảnh client_scripts > app > player_statsthực sự là generator, thì đó là đường dẫn client_scripts/app/player_stats/generator.js.

Câu hỏi này có tại lập trình viên.stackexchange.com / questions / 250481 . Ngoài ra còn có serverfault.com/questions/ 250481 . 250481đó là một điều trong bối cảnh các câu hỏi của Lập trình viên, và một điều khác trong bối cảnh các câu hỏi về Lỗi Máy chủ.

Đường dẫn (hoặc URL) là tốt vì chúng là các định danh lồng nhau. Hãy sử dụng chúng theo cách đó :)


7

Luôn luôn sử dụng tên mô tả trên các tên ngắn trừ khi đó là một biến như hằng số toán học hoặc biến vòng lặp trong đó các quy ước của ngôn ngữ trong câu hỏi có lợi cho các tên ngắn. Ví dụ, nếu bạn gọi một biến là "pi" và có giá trị chính xác của pi, thì tên đó là tốt và được điểm. Mặt khác, nếu bạn có một trình tạo tạo các số hạng của chuỗi Taylor cho Pi và cộng chúng lại với nhau gần đúng với pi, bạn muốn gọi nó là "taylorPiGenerator hoặc tương tự.

Tên tốt bây giờ tiết kiệm thời gian tái cấu trúc sau hoặc thậm chí tệ hơn các lỗi lớn sau này.

Các cuốn sách Clean CodeCode Complete đi sâu vào chi tiết đáng kể vì các vấn đề về cách đặt tên tốt nhưng chúng không phải là nguồn duy nhất.


Câu trả lời này dường như áp dụng tốt cho ví dụ cụ thể này, nhưng nó không giải quyết được câu hỏi chung.
Paul Draper

3

Nó phụ thuộc vào công nghệ mà bạn đang làm việc. Tên nên xác định các mục và đường dẫn nên xác định bối cảnh. Tôi đồng ý đặt tên tốt là quan trọng nhưng hey, đường dẫn cũng là tên. Nhưng theo quan điểm thực tế, nếu bạn đang sử dụng một cái gì đó như Javascript , có lẽ tốt hơn là giữ tên chính xác hơn cho các mục cuối. Nếu bạn đang làm việc với các công cụ cân nhắc điều này, như Python , cách được đề xuất sẽ là sử dụng cùng tên với đường dẫn khác nhau (mô-đun, không gian tên). Nếu bạn nhìn vào Java, bạn cũng sẽ tìm thấy các lớp có cùng tên và các gói khác nhau. Người ta có thể tiến xa hơn và nói các phương thức được đặt tên là các hành động trong ngữ cảnh của lớp và chúng ta có các phương thức được đặt tên giống nhau trong các lớp khác nhau, chúng có thể được đặt tên giống nhau nhưng được đặt trong các gói khác nhau. Zen của Python nói:

Không gian tên là một ý tưởng tuyệt vời - hãy làm nhiều hơn nữa!

Nhưng javascript có những điều kỳ quặc và đặc quyền nên tôi khuyên bạn nên sử dụng các tên khác nhau (ngay cả khi các tệp nằm trong các đường dẫn khác nhau). Ngoài ra, bạn có thể tìm kiếm mô hình mô-đun trong javascript có thể giúp bạn viết mã sạch hơn:

    var playerStatsGenerator = player_stats.Generator();
    var coachSettingsGenerator = coach_settings.Generator();

Bạn có thể có bánh của bạn và ăn nó quá.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.