问题描述
我需要在api中进行请求,我必须发送11个参数,但是使用代码分析工具通知我,我最多必须发送6个参数。对于这些形式,我将进行某种形式的重构参数没有以这种方式发送?我正在用Kotlin 我简化了代码:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="
https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/js/bootstrap-datepicker.min.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.jquery.min.js">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.min.js">
</script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.min.css">
<select name="titulos" class="raza">
<option hidden value="" disabled selected>Raza</option>
<option value="Brujas y brujos">Brujas y brujos</option>
<option value="Hijos de Eva">Hijos de Eva</option>
<option value="Humanos">Humanos</option>
<option value="Licántropos">Licántropos</option>
<option value="@R_547_5404@as y tritones">@R_547_5404@as y tritones</option>
<option value="Vampiros">Vampiros</option>
</select>
<select name="titulos" class="nivel">
<option hidden value="" disabled selected>Nivel</option>
<option value="Nivel nato">Nivel nato</option>
<option value="Nivel primario">Nivel primario</option>
<option value="Nivel medio">Nivel medio</option>
<option value="Nivel total">Nivel total</option>
</select>
<table>
<tbody>
<tr>
<td>
<div class="stats" style=" width: 90px; "><input id="fue" type="text" class="fue" value="" placeholder="0"> Fuerza</div>
</td>
<td>
<div class="stats" style=" width: 90px; "><input id="mag" type="text" class="mag" value="" placeholder="0"> Magia</div>
</td>
<td>
<div class="stats" style="width: 120px;"><input id="res" type="text" class="res" value="" placeholder="0"> Resistencia</div>
</td>
<td>
<div class="stats" style="width: 120px;"><input id="vel" type="text" class="vel" value="" placeholder="0"> VeLocidad</div>
</td>
<td>
<div class="stats" style="width: 115px; "><input id="vit" type="text" class="vit" value="" placeholder="0"> Vitalidad</div>
</td>
</tr>
</tbody>
</table>
</div>
viewmodel.requestTest(param1,param2,param3,param4,param5,param6,param7,param8,param9,param10,param10)
解决方法
使用数据类作为参数的包装。
data class RequestParams(val param1: String,...,val paramN: String)
fun requestTest (params: RequestParams) {
// use parameters like params.param1
}
注意,您还可以为这些参数提供默认值,并在大多数情况下使用命名参数来简化此类调用,例如
data class RequestParams(
val name: String = "foo",val value: Int = 3,val whatever: String? = null)
val params = RequestParams(
value = 5
)
...
请注意,您仍然要向数据类的构造函数传递6个以上的参数,但是通常情况下,整理工具会认识到数据类是保存许多属性的惯用方式,并且在检查此规则时会忽略它们(如@Matt Timmermans在您的问题的评论中,这是indeed the case)。
如果那不能解决您的问题,那么您可以将10个参数分为2个数据类,分别具有5 + 5或4 + 6参数-是否有意义完全取决于参数的基本业务含义。
如果这样分割参数没有意义,我倾向于在数据类构造函数上添加一个linter忽略注释,而不是专门针对该linter进行编码。
,我认为在Android系统中使用Bundle(https://developer.android.com/reference/android/os/Bundle?hl=en)之类的对象很有用