Có những lập luận nào chống lại trứng Phục sinh? Có bất kỳ đối số để thậm chí hỗ trợ trứng Phục sinh? [đóng cửa]


28

Tôi là một người thích đùa giỡn nên ý tưởng về một quả trứng Phục sinh vẫn hấp dẫn tôi. Tôi đã thêm chúng vào mã của mình trước đây nhưng nhóm bạn của tôi có một trò đùa đang sử dụng CTRL-FU để kích hoạt trứng.

Bây giờ tôi cũng hơi hoang tưởng về hiệu suất nên tôi thích loại bỏ bất cứ khi nào có thể. Điều này mâu thuẫn nặng nề với trứng Phục sinh vì chúng là mã 100% không cần thiết.

Có những lập luận nào chống lại trứng Phục sinh? Ngoài ra, có bất kỳ đối số để thậm chí hỗ trợ trứng Phục sinh?


5
IMHO câu hỏi này hoàn toàn không xứng đáng để bỏ phiếu, chắc chắn không phải là không có động lực. Bản thân tôi rất quan tâm đến chủ đề này. Đặc biệt là biết làm thế nào nó được cảm nhận bởi người dùng cuối, các ông chủ thực sự.

Đây là điểm chính cho một @Mark Trapp cổ điển "chúng tôi ở đây để giải quyết các vấn đề thực sự mà bạn có thể gặp phải."
Gratzy

1
@ChrisF wow nếu lập trình câu hỏi của tôi.stackexchange.com/questions/38810/ cho nhận được câu trả lời "câu hỏi thực sự" và bạn nói với tôi điều này không thì tôi thực sự bối rối về mục đích của trang web này.
Gratzy

1
Câu hỏi tuyệt vời, IMHO.
Uri

1
@Mark C Aye, tôi chỉ hoang tưởng quá mức về việc lãng phí tài nguyên.

Câu trả lời:


11

Như mọi khi câu trả lời là "nó phụ thuộc".

Trứng phục sinh là một cách khuyến khích khám phá chương trình "thế giới". Trong một trò chơi, điều đó khá rõ ràng - bạn leo lên đỉnh núi cao nhất và bạn tìm thấy nó (ví dụ), nhưng đối với các ứng dụng khác, bạn phải sử dụng các tùy chọn ẩn làm Easter Egg. Tuy nhiên, chúng bị một số người coi là phù phiếm, vì vậy nếu bạn đang viết một ứng dụng kinh doanh cực kỳ nghiêm túc, bạn không muốn làm phiền người dùng của mình bằng cách trình bày cho họ một màn hình chuột đồng hát (hoặc bất cứ điều gì) khi họ tìm thấy tổ hợp phím ma thuật .

Có một Easter Egg trong một ứng dụng không nên có tác động bất lợi đến hiệu suất. Vì vậy, trừ khi bạn đang phân tích cú pháp đầu vào bàn phím cho hoạt động bình thường của ứng dụng của bạn có Ctrl+ FUvì trình kích hoạt là một ý tưởng tồi. Miễn là mã chỉ được thực thi nếu được tìm thấy để không bị phạt thời gian chạy. Hình phạt duy nhất là tăng quy mô chương trình - có thể có hoặc không có vấn đề. Nếu kích thước chương trình là một vấn đề thì chắc chắn bỏ nó ra.

Tuy nhiên, có thêm mã có một vấn đề hỗ trợ. Bạn vẫn cần hỗ trợ mã và đảm bảo rằng nó hoạt động và không gây ra vấn đề khi thực thi. Điều cuối cùng bạn muốn là ứng dụng của bạn gặp sự cố giống như người dùng tìm thấy Easter Egg!


"Có một Easter Egg trong một ứng dụng không nên có tác động bất lợi đến hiệu suất. Nó sẽ chỉ được thực thi nếu được tìm thấy vì vậy không có hình phạt thời gian chạy." Có thật không? Nếu nó được kích hoạt bởi CTRL-FU như trạng thái OP thì bạn không bị kẹt trong mỗi hành trình phím?
Gratzy

2
@Gratzy - Trên thực tế đó là một điểm tốt - trừ khi bạn đang bẫy các tổ hợp phím cho hoạt động bình thường thì đó là một ví dụ về một quả trứng Phục sinh tồi tệ.
ChrisF

7

Tôi muốn nói rằng điều đó phụ thuộc nhiều vào loại phần mềm bạn đang phát triển.

Trứng Phục sinh Imho có nhiều khả năng được chấp nhận (hoặc thậm chí được đánh giá cao) trong các trò chơi hơn là trong phần mềm kinh doanh. Ngay cả Microsoft đã đưa một số Trứng Phục sinh vào các sản phẩm của họ, nhưng gần như đã hoàn toàn dừng việc đó. Lý do tại sao Microsoft ngừng đưa Trứng Phục sinh vào có liên quan chặt chẽ với các lý do có thể chống lại Trứng Phục sinh: mối lo ngại về bảo mật. Như đã nêu trong bài viết Wikipedia có liên quan, Trứng Phục sinh thường (ít nhất là cho người dùng / khách hàng) các phần không có giấy tờ trong mã có thể khiến anh ta tin rằng sản phẩm này cởi mở hơn với các cuộc tấn công hoặc theo những cách khác không đáng tin cậy. Hơn nữa, không phải tất cả mã Easter Egg đều được kiểm tra và kiểm toán với cùng một mã "nhiệm vụ quan trọng". Điều đó có thể dẫn đến các lỗ hổng chưa được phát hiện hoặc các lỗ lặp trong cơ sở mã có thể là nguồn gốc của một cuộc tấn công hoặc khai thác phần mềm độc hại sau này.

Tuy nhiên, không phải tất cả Trứng Phục sinh đều "xấu" và yêu cầu giả mạo mã thực tế của sản phẩm. Có rất nhiều cách để trình bày Trứng Phục sinh, đặc biệt là trong các trò chơi mà mã được tách biệt với nội dung (công cụ trò chơi / đồ họa / tập lệnh so với tập lệnh thực tế hoặc tập tin cấp độ). Những cách này bao gồm từ kết cấu / đối tượng đặc biệt và nhận xét âm thanh của nhân vật chính (ví dụ như được sử dụng trong DN3D: Doom , Terminator , Indiana Jones , Star Trek ) đến các cấp độ bí mật ( "không có cấp độ bò" ) cho các hộp thoại hiển thị khi một đối tượng nhất định / vị trí trong giao diện người dùng được nhấp và nhiều hơn nữa. Tất nhiên không phải mỗi trong số này là phù hợp cho mọi loại sản phẩm.

Một cách hay để đưa Trứng Phục Sinh vào sản phẩm của bạn là bao gồm chính bạn bằng cách nào đó (và không chỉ trong phần tín dụng). Blizzard đã làm điều này rất độc đáo với StarCraft 2 . Một chân dung đơn vị thực sự là khuôn mặt của một trong những nhà phát triển. Một cái gì đó không rõ ràng như thế thường phù hợp với nhiều loại phần mềm khác nhau vì nó không dựa vào kiến ​​thức truyền thông hoặc một loại hài hước nhất định. Ví dụ: có lẽ bạn có thể bao gồm chính mình như một nhân vật trong bối cảnh của sản phẩm. Tùy thuộc vào sản phẩm, điều này thậm chí có thể không yêu cầu cơ hội mã hoặc chỉ một điều rất đơn giản.

Trứng Phục Sinh là imho đẹp nhưng không bắt buộc. Việc thực hiện Easter Egg không bao giờ làm mất giá trị của sản phẩm thực tế và cách trình bày của nó phải phù hợp với đối tượng mục tiêu thụt lề của sản phẩm cuối cùng. Một Easter Egg trong một ứng dụng "nghiêm túc" hoặc một sản phẩm nhắm vào người không phải là người trưởng thành không bao giờ nên bao gồm sự hài hước của người lớn hoặc nội dung tình dục, bất kể nó có vẻ buồn cười hay vô hại như thế nào. Điều này không chỉ dẫn đến hậu quả pháp lý mà còn ảnh hưởng đến phạm vi tiếp thị của phần mềm ( ví dụ: xếp hạng USK / PEGI / ESRB ).


1
Bạn thực sự cần phải xem lý do tại sao Microsoft ngừng đưa trứng Phục sinh vào mã của họ. Trứng Phục sinh là một đường dẫn mã chưa được kiểm tra đầy đủ (nếu bạn có cơ hội thực hiện QA đầy đủ trên trứng Phục sinh, tại sao bạn không dành thời gian để đưa vào một tính năng khác, hữu ích thay thế?), Có nghĩa là nó là một nguồn tiềm năng của lỗ hổng bảo mật.
Anon.

@Anon: Từ bài viết trên Wikipedia tôi đã đề cập trong câu trả lời của mình: "Microsoft, người trước đây đã tạo ra một số quả trứng Phục sinh lớn nhất và công phu nhất như những quả trứng trong Microsoft Office, không còn cho phép trứng Phục sinh trong phần mềm của họ sáng kiến ​​điện toán đáng tin cậy của họ. " Nguồn cho tuyên bố đó là bài viết blog MSDN được liên kết trong câu trả lời của Charles. Tôi không thấy bất kỳ mâu thuẫn nào với tuyên bố của mình. Bạn có thể vui lòng giải thích nơi tôi đã nhận sai? :)
Baelnorn

Phần đầu tiên của câu trả lời có nội dung như "này, Microsoft đã từng làm điều này, không phải là tuyệt vời", nhưng sau đó, lý do thực tế tại sao họ không làm điều đó nữa bị chôn vùi giữa chừng câu trả lời. Một người đọc bình thường sẽ không nhìn thấy nó và nó bị ngắt kết nối khỏi bối cảnh có liên quan. Lý tưởng nhất, tôi muốn chia sẻ lại các đoạn để đặt đoạn văn nổi bật hơn một chút.
Anon.

@Anon: Cảm ơn vì đã ngẩng cao đầu. Tôi đã chỉnh sửa câu trả lời của mình và sắp xếp lại các đoạn văn, nêu chi tiết lý do chống lại EE trong phần đầu tiên.
Baelnorn

5

Trứng phục sinh là phổ biến ngay cả trong các bản phát hành phần mềm thương mại lớn trong thập niên 80 và 90. Phần lớn họ dễ thương và tương đối ít người bị họ làm phiền. Tôi nghĩ rằng chúng ít phổ biến ngày nay vì ba lý do:

  1. Giống như tất cả các trò đùa thực tế, chúng hài hước cho đến khi ai đó để mắt ra. Nếu trứng Phục sinh của bạn có lỗi gây mất dữ liệu hoặc vấn đề về hiệu suất thì cuối cùng bạn có thể phải giải thích với một nhóm luật sư rằng bạn không thực sự phát tán "phần mềm độc hại".

  2. Hài hước là rất, rất, rất khó để làm đúng, và nếu bạn làm sai, bạn sẽ xúc phạm những khách hàng trả tiền, những người sau đó sẽ ngừng trả tiền cho phần mềm của bạn và họ sẽ viết nhiều lá thư khó chịu cho báo chí về một công ty tồi tệ, non nớt mà bạn làm việc cho Ví dụ về một quả trứng Phục sinh được kích hoạt bởi Ctrl-FU là một ví dụ hoàn hảo. Điều này có lẽ rất buồn cười đối với những người bạn 17 tuổi của bạn, nhưng đó là quy tắc tiếp thị thứ 0 để không bao giờ nói với khách hàng của bạn "FU", thậm chí là nói đùa. Lưu ý rằng những quả trứng Phục sinh trong phần mềm thương mại lớn KHÔNG BAO GIỜ tạo niềm vui cho người dùng, chỉ những đối thủ cạnh tranh.

  3. Theo lời bất hủ của Peter Tork of the Monkees trong bộ phim Head : "Không ai cho người khác mượn tiền với khiếu hài hước". Nếu bạn đang mua một phần quan trọng của cơ sở hạ tầng phần mềm, một cảm giác hài hước trong tác giả là không yên tâm. Bên cạnh đó, tại sao họ lại dành thời gian viết trứng Phục sinh khi họ có thể sửa được vô số lỗi bảo mật?

Larry Osterman đã có một bài đăng blog khá nổi tiếng nhiều năm trước để thảo luận về lý do tại sao nhóm hệ điều hành tại Microsoft không còn cho phép trứng Phục sinh .


1
Thậm chí ngày nay Google có một quả trứng Phục sinh - có nghĩa là họ đang kiểm tra đầu vào để kích hoạt Trứng Phục sinh trên mỗi tìm kiếm. Nó có thể không được xử lý nhiều, nhưng xem xét hàng trăm triệu tìm kiếm mà họ xử lý mỗi ngày ... Tôi không biết.
Charles Salvia

Tôi phải thú nhận rằng tôi đã đọc CTRL-FU như một loại KUNG-FU.
Christopher Creutzig

@Christopher đó là một cách giải thích hoàn toàn hợp lý. Sự hài hước thường chịu nhiều sự diễn giải, đó là một phần lý do tại sao việc đưa vào phần mềm của bạn mà không có nguy cơ làm mất lòng ai đó.
Charles E. Grant

@CharlesSalvia Tùy thuộc vào cách họ xử lý các tìm kiếm để xác định kết quả "Ý của bạn", nó có thể không thêm bất kỳ chi phí nào vào đầu những gì đã có cho hành vi đó.
JAB

4

Trứng phục sinh là những bí mật nhỏ mà các nhà xây dựng để lại. Liệu nó có làm tổn thương người dùng cuối? Không.

Nhiều phần mềm nổi tiếngphổ biến đã bao gồm trứng Phục sinh ẩn . Trứng phục sinh cũng đã được sử dụng để hiển thị cảm xúc của nhà phát triển về một chủ đề cảm động cụ thể theo một cách khá thanh lịch.

Đối với tối ưu hóa mã, miễn là trứng Phục sinh không quá chuyên sâu ( giả lập chuyến bay xin chào ), điều đó sẽ không ảnh hưởng đến hiệu suất theo cách có ý nghĩa.


Tôi không đồng ý. Một quả trứng Phục sinh làm tăng nguy cơ xảy ra sự kiện có thể gây hại cho người dùng. Tốt nhất, các "tính năng bổ sung" này đã được thử nghiệm và chỉ đơn giản là sử dụng hết thời gian của cả nhà phát triển và QA. Tồi tệ nhất, không ai khác ngoài người thực hiện biết về nó. Nhà triển khai sau đó rời công ty và sau đó một bản cập nhật cho phần mềm vô tình khiến trứng Phục sinh biến thành ác ý với các hành động như cắt các sự kiện bàn phím, ăn hết RAM có sẵn hoặc trong trường hợp cực đoan ... xóa nội dung của người dùng ổ cứng. Quá đỉnh? Có lẽ. Tuy nhiên tôi đã thấy mỗi trong số chúng xảy ra như là lỗi bình thường.
mummey

@mummey: Tôi nghĩ đó là một sự cố rất khó xảy ra.
Josh K

Bạn sẽ không làm hết sức mình để giảm thiểu những rủi ro đó chứ?
Người sử dụng Stuper

@Stuper: Bạn đã bao giờ nghe nói về một quả trứng Phục sinh làm hỏng chương trình chưa?
Josh K

Không nghe thấy bất kỳ, nhưng tai nạn trong trứng Phục sinh không đủ quan trọng để đảm bảo công bố các vấn đề trong hầu hết các phần. Người dùng thường không gửi lại thông tin cho hầu hết các sự cố chương trình MS trong khi hoạt động bình thường .
Người sử dụng Stuper

2

Mặc dù tôi thích Easter Egg trong phần mềm, nhưng điều quan trọng cần nhớ là ranh giới giữa một quả trứng còn lại trong một sản phẩm cho vui và một cửa hậu độc hại có thể rất mỏng từ quan điểm pháp lý. Ví dụ, nó là cần thiết để hiển thị tác hại? Có ai cần chứng minh ý định làm hại không?

Xem xét rằng sự hiểu biết của tòa án về máy tính và phần mềm là khá khốn khổ (bằng chứng là một số bằng sáng chế phần mềm), tranh luận về một trường hợp như vậy sẽ mua cho một số luật sư một ngôi nhà nghỉ mát tuyệt vời ở Aspen. Khi một người xem xét các môi trường pháp lý khác nhau (như DMCA) trong đó phần mềm được xuất bản và phân phối trên toàn thế giới, họ cũng có thể mua cho họ những ngôi nhà nghỉ mát ở dãy Alps.

Là kỹ sư được thuê, chúng tôi bảo đảm để làm cho công ty của chúng tôi không có hại. Kiện tụng có thể trở nên có hại và có thể kiện tụng nếu chúng tôi cung cấp phần mềm theo hợp đồng cho các khách hàng khác, đặc biệt là chính phủ hoặc các doanh nghiệp lớn. Vì vậy, cá nhân tôi sẽ chọn sai ở khía cạnh an toàn.

Hãy nhớ rằng, các kỹ sư tồn tại để sử dụng logic để kết thúc tốt đẹp, trong khi các luật sư tồn tại để xoắn logic cho cái ác. Đó là lý do tại sao họ được trả nhiều hơn chúng ta.


0

Nhiều người đã tuyên bố Trứng Phục sinh phù hợp hơn với các trò chơi, nhưng tôi nghĩ rằng chúng có công dụng trong các ứng dụng kinh doanh. Quá nhiều người chỉ tạo ra một loạt các công thức để sử dụng một ứng dụng kinh doanh mà họ không bao giờ nhìn vào các lĩnh vực khác của ứng dụng. Ý tôi là có toàn bộ các phần của một ứng dụng mà họ không bao giờ nhìn vào nếu đó không phải là một phần trong quá trình đào tạo của họ và nó có thể đã được sử dụng cho họ. Hiện tại tôi đã làm việc trên một ứng dụng với 75 báo cáo và người dùng đang hỏi thông tin và họ thậm chí không bao giờ chạy một báo cáo nào. Họ cần một số động lực để bù đắp cho sự thiếu tò mò của họ (Để phòng thủ, một số người dùng sợ phá vỡ một cái gì đó.).


-2

Tôi sử dụng trứng Phục sinh để giúp tôi gỡ lỗi và mã hóa. Do đó, những quả trứng Phục sinh mà tôi đưa vào phục vụ một mục đích và có lẽ không được coi là trứng Phục sinh.


Chính xác ý bạn là gì về 'trứng Phục sinh' trong cách sử dụng của bạn? Bạn có thể cho tôi một ví dụ?

Đây không phải là một quả trứng Phục sinh mà là một cửa hậu. Chúng tôi đôi khi đặc biệt kiểm tra GUI khi công cụ nhấp đúp vào nút chuột giữa ở vị trí màn hình (0,0), sau đó nhập mật khẩu chính xác. Điều này được thực hiện để các công cụ tự động hóa GUI có thể xử lý nó. Người dùng có thể làm điều này tốt trên lý thuyết, nhưng trên thực tế họ sẽ không đạt được điều đó. Thêm vào đó, có những dấu hiệu cảnh báo ở khắp mọi nơi.
Công việc

1
@Glenn, một ví dụ điển hình sẽ là ... nếu bạn đang vận chuyển một ứng dụng GUI trên máy tính để bàn. Khi người dùng nhấp vào một nút, họ sẽ nhận được một hộp thoại mới. Khi người dùng nhấp vào nút đó trong khi giữ phím shift, họ sẽ nhận được một phím cũ. Đây sẽ là một cách tốt để so sánh chức năng cũ và mới, khi cố gắng sửa các lỗi gây ra bởi tiện ích mới. Nếu bạn thận trọng, bạn có thể để lại mã kép nhưng bình luận ra cửa sau. Sau đó, khi bạn cần gỡ lỗi mọi thứ, bỏ ghi chú, xây dựng lại, và bây giờ bạn có thể so sánh hai thứ cạnh nhau. Dave, xin lỗi vì đã cố gắng đánh cắp sấm sét của bạn.
Công việc
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.