2009-08-04 98 views
45

Tôi cần một tên biến tốt cho một giá trị boolean trả về false khi một đối tượng là cuối cùng trong một danh sách.Quy ước đặt tên: Đặt tên biến boolean là gì?

Tên phong nha duy nhất tôi có thể đưa ra là 'inFront', nhưng tôi không nghĩ đó là mô tả đủ.

Một lựa chọn khác sẽ là 'isNotLast'. Đây không phải là thực hành tốt mặc dù (Mã Hoàn thành, trang 269, Sử dụng tên biến boolean dương).

Tôi biết rằng tôi có thể thay đổi định nghĩa biến. Vì vậy, true được trả về khi một đối tượng là cuối cùng và gọi biến 'isLast', tuy nhiên, nó sẽ làm cho công việc này dễ dàng hơn nếu tôi có lời giải thích đầu tiên.

+1

Điều gì về việc đăng một số mã? biến cần ngữ cảnh – fabrizioM

+7

Nếu bạn thay đổi tên bạn đang điều trị triệu chứng. Nguyên nhân gốc rễ của vấn đề này là logic âm. – starblue

+1

Làm thế nào về hasPredecessor/hasSuccessor để biểu thị cho dù có bất kỳ mục nào đứng trước/theo mục hiện tại? if (item.hasSuccessor) {blah blah blah} –

Trả lời

34
isBeforeTheLastItem 

isInFrontOfTheLastItem 

isTowardsTheFrontOfTheList 

Có thể quá dài dòng nhưng chúng có thể giúp bạn đưa ra ý tưởng.

+5

tôi nghĩ rằng tôi được bán trên 'isBeforeLast' ... duh –

+9

Không thể 'isBeforeLast' được thay thế bằng'! IsLast'? –

+27

Nếu có thể có các phần tử _after_ "Last", thì tại sao nó được gọi là "Last"? –

15

hasFollowingItems? hoặc hasFollowingXXXXs trong đó XXXX là bất kỳ mục nào trong danh sách của bạn?

+3

Tôi đã suy nghĩ theo những dòng đó. hasNext có thể hoạt động. –

11

Cá nhân nhiều hơn bất cứ điều gì tôi sẽ thay đổi logic hoặc xem quy tắc kinh doanh để xem liệu chúng có đặt ra bất kỳ tên đặt tiềm năng nào hay không.

Vì điều kiện thực tế chuyển đổi boolean thực sự là hành động "cuối cùng". Tôi sẽ nói rằng chuyển đổi logic, và đặt tên nó là "IsLastItem" hoặc tương tự sẽ là một phương pháp ưa thích hơn.

+2

+1. Nếu tôi nhớ chính xác, đây cũng là tinh thần của phần đó trong Hoàn thành mã. –

0

Tôi sẽ gọi biến số beforeLast.

1

Làm thế nào về:

hasSiblings 
or isFollowedBySiblings (or isFolloedByItems, or isFollowedByOtherItems etc.) 
or moreItems 

Mặc dù tôi nghĩ rằng ngay cả khi bạn không nên tạo một thói quen phanh 'quy tắc' đôi khi cách tốt nhất để đạt được một cái gì đó có thể làm cho một ngoại lệ của quy tắc (Code Complete hướng dẫn), và trong trường hợp của bạn, đặt tên cho biến isNotLast

+0

Một anh chị em là một người có cha mẹ chung với anh chị em khác. Không có cha mẹ trong một danh sách phẳng. –

+0

@ John Topley: Vâng, tôi cho rằng bạn nói đúng nhưng bạn có thể tranh luận rằng tất cả các mục trong danh sách là anh chị em và cha mẹ của họ là danh sách chính nó .. Tôi đoán isFollowedBySiblings có thể được đổi tên thành một cái gì đó như isFollowedByItems, hoặc byOtherItems hoặc byMoreItems hoặc cái gì khác. Tôi vẫn cảm thấy isNotLast là tên tốt hơn, trừ khi anh ta có thể thay đổi ý nghĩa của lá cờ sang đối diện và sau đó gọi nó là: isLast (wow .. dài quá :) –

2

Haskell sử dụng init để đề cập đến tất cả ngoại trừ yếu tố cuối cùng của một danh sách (nghịch đảo của tail, về cơ bản); isInInit có hoạt động hay quá mờ đục không?

+3

Quá mờ đục. Bất cứ ai không biết Haskell sẽ chỉ bị lẫn lộn. –

+0

matlab và octave sử dụng 'end' để chỉ định mục cuối cùng – wander95

3

isPenultimateOrPrior

isBeforeEnd

0

Hai vấn đề cần suy nghĩ về

  1. phạm vi của biến là gì (nói cách khác: Bạn nói về một biến cục bộ hoặc một lĩnh vực) ? Biến cục bộ có phạm vi hẹp hơn so với trường. Đặc biệt, nếu biến được sử dụng bên trong một phương pháp tương đối ngắn, tôi sẽ không quan tâm nhiều đến tên của nó. Khi phạm vi đặt tên lớn là quan trọng hơn.

  2. Tôi nghĩ rằng có một xung đột cố hữu trong cách bạn xử lý biến này. Một mặt bạn nói "sai khi một đối tượng là cuối cùng trong một danh sách", mặt khác, bạn cũng muốn gọi nó là "inFront". Một đối tượng (không) cuối cùng trong danh sách không tấn công tôi như (not) inFront. Điều này tôi sẽ đi với isLast.

30

Bỏ phiếu của tôi sẽ đặt tên là IsLast và thay đổi chức năng. Nếu đó không thực sự là một lựa chọn, tôi sẽ để lại tên là IsNotLast.

Tôi đồng ý với Hoàn thành mã (Sử dụng tên biến boolean dương), tôi cũng tin rằng các quy tắc được thực hiện là bị hỏng. Điều quan trọng là để phá vỡ chúng chỉ khi bạn hoàn toàn phải. Trong trường hợp này, không có tên thay thế nào rõ ràng như tên "phá vỡ" quy tắc. Vì vậy, đây là một trong những thời gian mà vi phạm quy tắc có thể được okay.

1

Một tên ngữ nghĩa đơn giản sẽ là last. Điều này sẽ cho phép mã luôn là mã tích cực như:

if (item.last) 
    ... 

do { 
    ... 
} until (item.last); 
-2

Tôi muốn sử dụng isUnlast.

Ngắn gọn, súc tích và mô tả tình huống một cách hoàn hảo!

+1

Đó là một tên rất khác thường và sẽ khiến hầu hết mọi người tạm dừng suy nghĩ ý nghĩa của nó. "Un" tôi nghĩ thường có thể ngược lại, thay vì chỉ là một sự phủ định. Vì vậy, nó có thể có nghĩa là "đầu tiên", chứ không phải là "không phải cuối cùng".Ngoài ra, nó quá gần với "unlasting", đó là một từ có nghĩa là một cái gì đó hoàn toàn khác nhau. Vì vậy, tất cả xung quanh, một sự lựa chọn khủng khiếp, tôi nghĩ. – jbyrd

+0

Đó là một cái tên buồn cười. – Watusimoto

+8

Nhìn vào câu trả lời của tôi một năm sau đó, nó là giá trị của downvote. – Watusimoto

Các vấn đề liên quan