วิธีการนำเสนอคุณสมบัติให้กับผู้ใช้เพียงไม่กี่ราย


11

ตัวอย่างที่ดีของสิ่งที่ฉันพยายามถามคือคุณสมบัติใหม่ของ Facebook ในการเริ่มต้นมีเพียงไม่กี่คนเท่านั้นที่ได้รับอนุญาตให้เข้าถึงไทม์ไลน์ เมื่อคุณลักษณะดังกล่าวเริ่มแข็งตัวมากขึ้นว่ามันทำงานอย่างไรและข้อบกพร่องได้รับการแก้ไขผู้ใช้เพิ่มเติมจึงได้รับอนุญาตให้เข้าถึงคุณลักษณะ ในภายหลังผู้ใช้กลุ่มใหญ่ได้รับอนุญาตให้เข้าถึงคุณลักษณะและตอนนี้เป็นคุณสมบัติทั่วไปสำหรับผู้ใช้ทั้งหมด ทีมพัฒนาใช้จัดการคุณลักษณะประเภทนี้อย่างไร

ฉันเล่นกับแนวคิดของการใช้การตั้งค่าเพื่อเลือกการควบคุมการเข้าถึงหากมีบางสิ่งในการทดสอบหรือในการผลิตผ่านไฟล์การกำหนดค่าและเงื่อนไขถ้าคำสั่งในรหัส ตอนนี้ในขณะนี้ไม่เป็นไรสำหรับคุณสมบัติที่เรียบง่ายฉันเชื่อว่าถ้าเราพยายามที่จะใช้สิ่งนี้ในฟีเจอร์ที่ใหญ่ขึ้นมันจะไม่สามารถจัดการได้

สิ่งใดจะเป็นวิธีที่ดีที่สุดในการจัดการการม้วนคุณสมบัติในลักษณะนี้


3
ACL & RBACเป็นสองวิธี (คล้ายกันมาก) สำหรับการทำสิ่งที่คุณกำลังมองหา
yannis

@ YannisRizos: ได้รับนั่นเป็นคำตอบเล็ก ๆ / สั้น ๆ แต่ฉันคิดว่ามันมีประโยชน์ตามกฎหมาย คุณควรโพสต์มันเป็นคำตอบ
Steven Evers

สิ่งนี้ไม่เหมือนกันสำหรับคุณสมบัติทั้งหมดไม่ใช่แค่ใหม่ใช่ไหม ขึ้นอยู่กับข้อมูลประจำตัวของผู้ใช้ที่มีการเข้าถึงจำนวน x ตัวเลือก? เช่นระดับผู้ดูแลระบบสามารถเปลี่ยนการตั้งค่าและระดับเสียงฮึดฮัดสามารถพิมพ์ข้อมูลได้เท่านั้น?
Pieter B

คำตอบ:


2

ทีมพัฒนาใช้จัดการคุณลักษณะประเภทนี้อย่างไร

เป็นการง่ายที่เดาได้ว่าระบบเช่น Facebook นั้นขับเคลื่อนด้วยฐานข้อมูลเป็นส่วนใหญ่ ข้อมูลผู้ใช้ทั้งหมดจะถูกเก็บไว้ในฐานข้อมูลอย่างชัดเจนและอาจรวมถึงข้อมูลเกี่ยวกับวิธีการแสดงข้อมูลของผู้ใช้ เป็นไปไม่ได้ที่จะทราบได้อย่างแน่ชัดว่าตั้งค่าฐานข้อมูลของ Facebook ได้อย่างไร แต่ต้องเป็นกรณีที่คุณลักษณะเช่น Timeline ถูกนำไปใช้กับผู้ใช้อย่างค่อยเป็นค่อยไปโดยการเลือกผู้ใช้ในฐานข้อมูลเป็นระยะตามเกณฑ์บางอย่างและการเปลี่ยนแปลงค่า สนามบางแห่ง

เช่นบางทีพวกเขามีข้อมูลในตารางผู้ใช้เช่นtimeline_statusที่มีค่าเช่นnot offered, offered, และpreview publicระบบของ Facebook สามารถตัดสินใจได้ว่าจะแสดงหน้าข้อมูลของผู้ใช้เพียงอย่างเดียว ทีม FB สามารถลองใช้คุณสมบัติไทม์ไลน์โดยเลือกกลุ่มผู้ใช้และเปลี่ยนค่าของฟิลด์นั้น

ในทางปฏิบัติฉันแน่ใจว่ามันซับซ้อนกว่านั้นเล็กน้อย แต่แนวคิดหลักคือบัญชีผู้ใช้เป็นเพียงข้อมูลและข้อมูลบางอย่างสามารถตัดสินได้ว่าคุณลักษณะใดที่มีอยู่ การเปิดใช้คุณลักษณะใหม่นั้นเป็นเพียงเรื่องของการอัปเดตระเบียนผู้ใช้ในฐานข้อมูล


9

... และเป็นเงื่อนไขถ้าข้อความในรหัส

ใช่นั่นเป็นวิธีที่ผิดที่จะทำ คุณลักษณะใดก็ตามที่ X คือหากสามารถกำหนดค่าได้จะต้องขยายหรือแทนที่บางอย่าง ทำเช่นนั้นในรหัส ตัวอย่างเช่นสิ่ง FB อาจมีดังนี้:

class UserPageView;
class HatedTimelineView : UserPageView;
class OldViewEveryoneLikes : UserPageView;

จากนั้นคุณจะสร้างโรงงานที่ทำให้วัตถุ UserPageView เมื่อไปที่หน้าผู้ใช้ตามการกำหนดค่า คุณเปิดใช้งานมุมมองนั้น ไม่มีสาขาที่โง่

คุณต้องการทำเช่นนี้เพราะถ้ามีคนขอให้คุณเปลี่ยนหนึ่งครั้งพวกเขาจะขออีกครั้ง ต่อไปพวกเขาจะขอเปลี่ยนสิ่งอื่น ไขปริศนาสถาปัตยกรรมของคุณด้วยเคสพิเศษและถ้ามีอยู่ทั่วทุกแห่งและคุณจะมีสปาเก็ตตี้ราขึ้นรูปแทนที่จะเป็นผลิตภัณฑ์ที่อุดมสมบูรณ์และเป็นผู้ใหญ่


คุณต้องใช้เงื่อนไขถ้าข้อความสั่ง มิฉะนั้นโรงงานของคุณจะรู้ว่า UserPageView ใดที่จะส่งคืน ที่กล่าวว่าฉันยอมรับว่าถ้าคำสั่งทั้งหมดผ่านรหัสเป็นความคิดที่ไม่ดีคุณต้องการรวมพวกเขาไว้ที่ส่วนกลาง
briddums

1

นึกถึงคุณลักษณะเช่นเดียวกับที่คุณคิดเกี่ยวกับคุณลักษณะการจัดการบนเว็บไซต์

เมื่อหน้ากำลังโหลดตรวจสอบว่าผู้ใช้มีสิทธิ์ที่ถูกต้องสำหรับคุณสมบัติถ้าเป็นเช่นนั้นโหลด

Facebook ดูเหมือนจะใช้วิธีการตามสถานที่ตั้งเมื่อเปิดตัวคุณสมบัติใหม่ นี่อาจจะง่ายเหมือนการดูที่อยู่ IP ของผู้ใช้เพื่อค้นหาตำแหน่งของพวกเขา

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