Get rid of ugly if statements

后端 未结 25 2212
借酒劲吻你
借酒劲吻你 2020-12-02 05:59

I have this ugly code:

if ( v > 10 ) size = 6;
if ( v > 22 ) size = 5;
if ( v > 51 ) size = 4;
if ( v > 68 ) size = 3;
if ( v > 117 ) size = 2         


        
25条回答
  •  旧时难觅i
    2020-12-02 06:18

    Actually, if the sizes are likely to change, doing it in the database could be a good alternate strategy:

    CREATE TABLE VSize (
       LowerBound int NOT NULL CONSTRAINT PK_VSize PRIMARY KEY CLUSTERED,
       Size int NOT NULL
    )
    INSERT VSize VALUES (10, 6)
    INSERT VSize VALUES (22, 5)
    INSERT VSize VALUES (51, 4)
    INSERT VSize VALUES (68, 3)
    INSERT VSize VALUES (117, 2)
    INSERT VSize VALUES (145, 1)
    

    And a stored procedure or function:

    CREATE PROCEDURE VSizeLookup
       @V int,
       @Size int OUT
    AS
    SELECT TOP 1 @Size = Size
    FROM VSize
    WHERE @V > LowerBound
    ORDER BY LowerBound
    

提交回复
热议问题