首页 新闻 会员 周边

命名的纠结:如何命名“表示成功或失败并带有具体信息”的返回值类型

0
悬赏园豆:100 [已解决问题] 解决于 2017-03-19 22:27

这是在开发中经常会遇到的返回值类型,类型的大致定义如下(C#代码),目前想到的最新命名是 BooleanResult 。

复制代码
public class BooleanResult
{
    public bool Success { get; set; }

    public string Message { get; set; }

    public static BooleanResult Succeed(string message = "")
    {
        return new BooleanResult { Success = true, Message = message };
    }

    public static BooleanResult Fail(string message)
    {
        return new BooleanResult { Success = false, Message = message };
    }
}

public class BooleanResult<T> : BooleanResult
{
    public T Value { get; set; }
}
复制代码

请问有没有更好的命名?

dudu的主页 dudu | 高人七级 | 园豆:30994
提问于:2017-02-08 11:54
< >
分享
最佳答案
0

结束纠结,最终还是选择了BooleanResult

dudu | 高人七级 |园豆:30994 | 2017-03-19 22:25
其他回答(10)
0

 

 

我觉得BooleanResult听起来一头雾水,还不如InvokeResult.。另外如果是我的话,在Message类型不是非常复杂的类型前提下,不会把message和succeeded放到一个类里,我会这样弄:

bool Function(v1, v2, out stirng essages)
{
   essages = "";
   //todo somthing
   if(xxx){return false;}
   return true; 
}    

 

main()
{
  String message;
  bool result = Function(v1,v2,out message);
  if(result == false)
  {
    Alert("error:" + message);
  }
}

 

 

 

收获园豆:10
会长 | 园豆:12401 (专家六级) | 2017-02-08 12:05

asnyc异步方法不支持out参数

支持(0) 反对(0) dudu | 园豆:30994 (高人七级) | 2017-02-08 12:16
0
public abstract class Result
{
  public bool Succeeded { get;protected set; }
  public string Message { get;protected set; }
}
public class SucceededResult : Result
{
  public SucceededResult (string message="")
  {  
    Message = message; Succeeded = true;
  }
}
public class FailResult : Result
{
  public FailResult(string message)
  {
     Message = message; Succeeded = false;
  }
}

 

收获园豆:10
长蘑菇星人 | 园豆:1832 (小虾三级) | 2017-02-08 12:06
0

ReturnInformation

RsponseMessage

感觉布尔值能表达的信息太多了,在不同的场景里面有不同的命名。

收获园豆:10
nil | 园豆:879 (小虾三级) | 2017-02-08 12:08

我觉得也是

支持(0) 反对(0) 会长 | 园豆:12401 (专家六级) | 2017-02-08 12:27
0

你网上搜 OperationResult  有一个开源现成的 返回类型 

我们公司一直使用这个 很好用!

 public OperationResult InsertTelphone(obj)

{

}

 

收获园豆:10
狂扁小朋友 | 园豆:10 (初学一级) | 2017-02-08 12:13
0

觉得还是老老实实的,只返回布尔值就Boolean,需要额外信息的就叫BooleanWithMessage

收获园豆:10
jieyuefeng | 园豆:201 (菜鸟二级) | 2017-02-08 12:26
0

你说的Result是函数返回的结果,使用Acknowledge,或其简写Ack,

字段成员:IsSucceed,Message

收获园豆:10
悦光阴 | 园豆:2251 (老鸟四级) | 2017-02-08 12:39
0

我觉得参照jq的Ajax方法命名以及http的命名;

succeeded有点怪,另外,还可以再加上一个errorcode。。。

 

收获园豆:10
顾晓北 | 园豆:10844 (专家六级) | 2017-02-08 13:27

Succeeded的命名也是今天纠结的地方,最终选择了Success,已修改。

支持(0) 反对(0) dudu | 园豆:30994 (高人七级) | 2017-02-08 13:45

@dudu: 我们之前有一个这样的类:

public class ReturnResult
    {
        public bool IsSucceed { get; set; }
        public int Code { get; set; }
        public string Message { get; set; }
    }
支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2017-02-08 14:04
0

类 msgModel

字段 statue   200(成功) 300  400 数据没找到 500 程序错误

ps:状态还可以扩展 

字段 content

 

单从命名上无法区分 比起 用bool  我到是建议用 statue 例如 StatueResult

但是我如果是我做的话 我建议 申明一个 IStatueResult 接口

要不然 就为了一个状态量 去占用一个类 实在太浪费了

 

继承接口(IStatueResult)的对象 有状态信息 

收获园豆:10
小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2017-02-08 17:57
0

OPResult,操作结果

 

收获园豆:10
hexllo | 园豆:318 (菜鸟二级) | 2017-02-15 17:09
0

public partial class DataResult
{
/// <summary>
/// 相应状态码
/// </summary>
public int Code { get; set; }

/// <summary>
/// 相应状态消息
/// </summary>
public string Message { get; set; }

/// <summary>
/// 业务状态码
/// </summary>
public int SubCode { get; set; }

/// <summary>
/// 业务相应消息
/// </summary>
public string SubMessage { get; set; }
}

 

 

public partial class DataResult<T> : DataResult
{
public T Result { get; set; }
}

 

 

public partial class DataListResult<T> : DataResult
{
public List<T> Result { get; set; }

public PageInfo PageInfo { get; set; }
}

收获园豆:10
贺臣 | 园豆:307 (菜鸟二级) | 2017-02-15 19:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册