这两天在忙着设计一个 Factory 算法,代码都写好了,却因为一个莫名其妙的 const 修饰符,折腾了好久,实是郁闷。
这个 Factory 是一个属性工厂。使用的享元模式,同一个属性可以被许多对象共享。每一个对象向工厂请求属性的时候,工厂会看一下当前是否已经有相同的属性,有的话把它返回给对象供使用,没有的话创建一个。办法是很简单的,不料我在写这个函数的时候,鬼使神差地在函数末尾加上了 const 修饰符,终于导致了数个小时的白忙活。因为这个算法显然是要改动类数据的,加上 const 之后,向属性工厂中的 map 添加数据时自然通不过编译。可笑的是我竟然很长时间没发现这个低级错误,把一个算法翻来覆去地修改,无意中打开类声明,才发现居然误写了个 const,真是啼笑皆非。将之一去除,当即豁然贯通。
编写代码就是怕遇上这类事故。不过总而言之,还是编码和排错的功力不够。嗯,需要重新审视一下自己了。
这个 Factory 是一个属性工厂。使用的享元模式,同一个属性可以被许多对象共享。每一个对象向工厂请求属性的时候,工厂会看一下当前是否已经有相同的属性,有的话把它返回给对象供使用,没有的话创建一个。办法是很简单的,不料我在写这个函数的时候,鬼使神差地在函数末尾加上了 const 修饰符,终于导致了数个小时的白忙活。因为这个算法显然是要改动类数据的,加上 const 之后,向属性工厂中的 map 添加数据时自然通不过编译。可笑的是我竟然很长时间没发现这个低级错误,把一个算法翻来覆去地修改,无意中打开类声明,才发现居然误写了个 const,真是啼笑皆非。将之一去除,当即豁然贯通。
编写代码就是怕遇上这类事故。不过总而言之,还是编码和排错的功力不够。嗯,需要重新审视一下自己了。