GVKun编程网logo

如何减少重复的代码以基于DTO和模型类进行计算(代码降低重复率)

25

如果您想了解如何减少重复的代码以基于DTO和模型类进行计算的相关知识,那么本文是一篇不可错过的文章,我们将对代码降低重复率进行全面详尽的解释,并且为您提供关于c#–如何减少我的代码,几乎相同结构的数量

如果您想了解如何减少重复的代码以基于DTO和模型类进行计算的相关知识,那么本文是一篇不可错过的文章,我们将对代码降低重复率进行全面详尽的解释,并且为您提供关于c# – 如何减少我的代码,几乎相同结构的数量可以非常大、c# – 如何在我的操作中删除重复的代码?、css奇技淫巧(一、减少重复的代码)、php – 在多个表中将相同的元数据插入相同的列时,如何减少重复代码?的有价值的信息。

本文目录一览:

如何减少重复的代码以基于DTO和模型类进行计算(代码降低重复率)

如何减少重复的代码以基于DTO和模型类进行计算(代码降低重复率)

如何解决如何减少重复的代码以基于DTO和模型类进行计算?

在我们的一个项目中,我们希望摆脱某种代码重复:它是关于在DTO和模型类上进行相同计算的代码。

例如我们有以下两种方法:

boolean isFreeShipping(CartDto cartDto) {
...
}
boolean isFreeShipping(CartModel cartModel) {
...
}

解决此问题的最佳方法是什么?

  • 仅对模型进行计算,并在需要时将DTO转换为模型吗?
  • 反之亦然?
  • 引入一个仅包含必需字段的特定值对象,并将其用于计算-带有DTO和模型的映射器?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

c# – 如何减少我的代码,几乎相同结构的数量可以非常大

c# – 如何减少我的代码,几乎相同结构的数量可以非常大

也许这是一个非常简单的问题,但我找不到答案:
如何减少我的代码,几乎相同结构的数量可以非常大:

例如

<Windows:HierarchicalDataTemplate x:Key="**Level2ItemTemplate**"
                                      ItemsSource="{Binding Children}"
                                      ItemTemplate="{StaticResource **Level3ItemTemplate**}">
        <Grid Height="100"
              Width="100"
              Margin="5">
            <Border Padding="5"
                    BorderThickness="1"
                    BorderBrush="#FFADADAD"
                    CornerRadius="5">
                <Border.Background>
                    <LinearGradientBrush EndPoint="0.5,1"
                                         StartPoint="0.5,0">
                        <GradientStop Color="#FFD47E00"
                                      Offset="0" />
                        <GradientStop Color="#FF563300"
                                      Offset="1" />
                    </LinearGradientBrush>
                </Border.Background>
                <TextBox textwrapping="Wrap"
                         Text="{Binding Title, Mode=TwoWay}"
                         VerticalAlignment="Center"
                         HorizontalAlignment="Center"
                         FontWeight="Bold"
                         FontSize="13.333"/>
            </Border>
            <Image HorizontalAlignment="Right"
                   Source="add.png"
                   Stretch="Fill"
                   Width="16"
                   VerticalAlignment="Bottom"
                   Margin="0,0,2,2"
                   Height="16">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="MouseLeftButtonDown">
                        <Graph:AddSpiderItemAction />
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </Image>
            <Image HorizontalAlignment="Right"
                   Height="16"
                   Source="remove.png"
                   Stretch="Fill"
                   VerticalAlignment="Top"
                   Width="16"
                   Margin="0,2,2,0">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="MouseLeftButtonDown">
                        <Graph:RemoveSpiderItemAction />
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </Image>
        </Grid>
    </Windows:HierarchicalDataTemplate>
    <Windows:HierarchicalDataTemplate x:Key="**Level1ItemTemplate**"
                                      ItemsSource="{Binding Children}"
                                      ItemTemplate="{StaticResource **Level2ItemTemplate**}">
        <Grid Height="100"
              Width="100"
              Margin="5">
            <Border Padding="5"
                    BorderThickness="1"
                    BorderBrush="#FFADADAD"
                    CornerRadius="5">
                <Border.Background>
                    <LinearGradientBrush EndPoint="0.5,1"
                                         StartPoint="0.5,0">
                        <GradientStop Color="#FFB5B5B5"
                                      Offset="0" />
                        <GradientStop Color="#FF474747"
                                      Offset="1" />
                    </LinearGradientBrush>
                </Border.Background>
                <TextBox textwrapping="Wrap"
                         Text="{Binding Title, Mode=TwoWay}"
                         VerticalAlignment="Center"
                         HorizontalAlignment="Center"
                         FontWeight="Bold"
                         FontSize="13.333"/>
            </Border>
            <Image HorizontalAlignment="Right"
                   Source="add.png"
                   Stretch="Fill"
                   Width="16"
                   VerticalAlignment="Bottom"
                   Margin="0,0,2,2"
                   Height="16">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="MouseLeftButtonDown">
                        <Graph:AddSpiderItemAction />
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </Image>
            <Image HorizontalAlignment="Right"
                   Height="16"
                   Source="remove.png"
                   Stretch="Fill"
                   VerticalAlignment="Top"
                   Width="16"
                   Margin="0,2,2,0">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="MouseLeftButtonDown">
                        <Graph:RemoveSpiderItemAction />
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </Image>
        </Grid>
    </Windows:HierarchicalDataTemplate>

等等…

解决方法:

您可以将相同的布局部件提取到单独的DataTemplates中,请参阅DataTemplate class.并将相同的样式分为不同的样式.

看一下非常好的MSDN文章Control Customization,它描述了模板,样式,部件和状态模型.

ScottGu的精彩文章:

> Using Style Elements to Better Encapsulate Look and Feel
> Using Control Templates to Customize a Control’s Look and Feel

c# – 如何在我的操作中删除重复的代码?

c# – 如何在我的操作中删除重复的代码?

我在mvc应用程序中重复了几次以下代码.

public ActionResult AnAction(int Id)
    {           
        var claim = GetClaim(Id);
        if (claim == null)
        {
            return View("ClaimNotFound");
        }

        // do stuff here
        ....
        return ....;
    }

到目前为止,这种模式使用了4次,而且变得越来越难看.重构它的最佳方法是什么?

编辑:
几个示例用法

public ActionResult Claim(int Id)
    {           
        var claim = GetClaim(Id);
        if (claim == null)
        {
            return View("ClaimNotFound");
        }

        return View("Claim",claim);
    }

    public ActionResult MedicalPV(int Id)
    {
        var claim = GetClaim(Id);
        if (claim == null)
        {
            return View("ClaimNotFound");
        }

        return PartialView(claim.MedCerts.AsQueryable<MedCert>());
    }

通常我需要访问视图中的对象.此特定代码仅用于一个控制器,但我可能需要在具有不同对象和视图的其他控制器中使用类似的代码.

解决方法

如果所有操作都需要声明,那么您可以尝试在OnActionExecuting中检索它,并在失败时将Result设置为ViewResult.如果只是某些操作,可能需要它,在执行方法之前检查以确保声明可用的ActionFilter,如果没有,则设置正确的视图.

private Claim Claim { get; set; }

public override void OnActionExecuting( ActionExecutingContext context )
{
    this.Claim = GetClaim( int.Parse( context.RouteData["id"] ) );
    if (this.Claim == null)
    {
        context.Result = View( "ClaimNotFound" );
    }
}

要么

public class RequiresClaimIdAttribute : ActionFilterattribute
{
    public override void OnActionExecuting( ActionExecutingContext context )
    {
         var claim = GetClaim( int.Parse( context.RouteData["id"] ) );
         if (claim == null)
         {
              context.Result = new ViewResult
              {
                   ViewName = "ClaimNotFound",ViewData = context.Controller.ViewData
              };
         }
         else
         {

              var property = context.Controller
                                    .GetType()
                                    .GetProperty( "Claim",BindingFlags.Public
                                                   | BindingFlags.NonPublic
                                                   | BindingFlags.Instance);
              if (property != null)
              {
                   property.SetValue(context.Controller,claim);
              }
         }
    }
}

[RequiresClaimId]
public ActionResult AnAction( int id )
{
    this.Claim.Updated = DateTime.Now;
    ...
}

css奇技淫巧(一、减少重复的代码)

css奇技淫巧(一、减少重复的代码)

总结

以上是小编为你收集整理的css奇技淫巧(一、减少重复的代码)全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

php – 在多个表中将相同的元数据插入相同的列时,如何减少重复代码?

php – 在多个表中将相同的元数据插入相同的列时,如何减少重复代码?

我的目标:

>遵循数据库规范化.
>能够跟踪表格中的变化.
>能够从给定的数据库恢复数据库的状态
时间点,例如上个月.
>分离处理数据的代码,以便
输入可以来自HTML表单,也可以来自另一种语言(Ruby / perl).

为了实现这一点,我选择了像这个答案中描述的数据库设计:

StackOverflow: Is there a MySQL option/feature to track history of changes to records?

但是,当用户更新多个字段时,必须将相同的元数据插入到包含相同列的多个表中,并且我的代码变得重复.

例:

用户通过HTML表单提交数据.
在Propel ORM的帮助下,PHP处理如下数据.

function insertEvent($name,$venueId,$user,$date,$id = 0) {
    //validation and formatting..
    //if id == 0,new event,//else,this is an update,archive the old database row on successful processing and maintain a common id as a parent
    //...
    $event = new Event();
    $event->setName($name); 
    $event->setVenueId($venueId); 
    $event->setUser($user); //1
    $event->setValidFrom($date); //1
    $event->setValidUntil(null); //1 
    $event->save(); 
    // ...
}

function insertEventPhonenumber($phonenumber,$pid,$id = 0) {
    //...
    $event_phonenumber = new EventPhonenumber();
    $event_phonenumber->setPid($pid); //2
    $event_phonenumber->setPhonenumber($phonenumber);
    $event_phonenumber->setUser($user); //2
    $event_phonenumber->setValidFrom($date); //2
    $event_phonenumber->setValidUntil(null); //2 
    $event_phonenumber->save(); 
    // ...
} 

function insertEventArtistId($artistId,$id = 0) {
    //...
    $event_artistId = new EventArtistId();
    $event_artistId->setPid($pid); //3
    $event_artistId->setArtistId($artistId);
    $event_artistId->setUser($user); //3
    $event_artistId->setValidFrom($date); //3
    $event_artistId->setValidUntil(null); //3
    $event_artistId->save(); 
    // ...
}

我的问题:

在我的完整代码中,受影响的表比示例中的三个更多.

标记为// 1,// 2和// 3,您会看到通常相同的数据输入.

在我的肚子里,我不喜欢这个.我一直在尝试搜索引擎,例如“sql插入查询多个表中的常用列”和措辞的变体,而没有找到与我的问题直接相关的任何内容.

这种不好的做法对我来说感觉如何吗?

如何最小化代码中的重复?

解决方法

你想摆脱所有这些功能吗?如果是这样,您可以使用call_user_func来消除大部分代码.

<?PHP
class MyApp {


     static function insert($name,$params) {
         $ob = new $name();
         foreach($params as $k=>$v) {
            $op = array($ob,"set".ucfirst($k));
            //if (is_callable($op)) {
                call_user_func($op,$v);
            //}
         }
         $ob->save();
     } 

}

MyApp::insert(
    "EventArtistId",array(
        "pid"=>$_REQUEST['pid'],"artistId"=>$_REQUEST['artistId'],"user" => $_REQUEST['user'],"validFrom" => $_REQUEST['date'],// may need to convert date
        "validUntil" => isset($_REQUEST['validUntil']) ? $_REQUEST['validUntil'] : null,)
);

// More cool
// MyApp::insert($_REQUEST['action'],$_REQUEST['params']);

?>

今天的关于如何减少重复的代码以基于DTO和模型类进行计算代码降低重复率的分享已经结束,谢谢您的关注,如果想了解更多关于c# – 如何减少我的代码,几乎相同结构的数量可以非常大、c# – 如何在我的操作中删除重复的代码?、css奇技淫巧(一、减少重复的代码)、php – 在多个表中将相同的元数据插入相同的列时,如何减少重复代码?的相关知识,请在本站进行查询。

本文标签: