Menu

#1074 Refactoring methods not works

open
nobody
None
5
2010-02-21
2010-02-21
No

See code.

It should be refactored:

dailyWhen = datetime(year = when.year, month = when.month, day = when.day)
monthlyWhen = dailyWhen.replace(day = 1)
yearlyWhen = monthlyWhen.replace(month = 1)

optionId = unicode(optionKey.id()) + u'-'
yearlyName = optionId + unicode(when.year)
monthlyName = yearlyName + '-' + unicode(when.month)
dailyName = monthlyName + '-' + unicode(when.day)

yearlyName = u'rocznie-' + yearlyName
monthlyName = u'miesięcznie-' + monthlyName
dailyName = u'dzienie-' + dailyName

shardNumberString = unicode(shardNumber)
yearlyShardName = yearlyName + '-' + shardNumberString
monthlyShardName = monthlyName + '-' + shardNumberString
dailyShardName = dailyName + '-' + shardNumberString

Refactoring generates almost correctly function (apart that order of parameters is random):
def xxx(optionKey, when, shardNumber):
dailyWhen = datetime(year=when.year, month=when.month, day=when.day)
monthlyWhen = dailyWhen.replace(day=1)
yearlyWhen = monthlyWhen.replace(month=1)
optionId = unicode(optionKey.id()) + u'-'
yearlyName = optionId + unicode(when.year)
monthlyName = yearlyName + '-' + unicode(when.month)
dailyName = monthlyName + '-' + unicode(when.day)
yearlyName = u'rocznie-' + yearlyName
monthlyName = u'miesięcznie-' + monthlyName
dailyName = u'dzienie-' + dailyName
shardNumberString = unicode(shardNumber)
yearlyShardName = yearlyName + '-' + shardNumberString
monthlyShardName = monthlyName + '-' + shardNumberString
dailyShardName = dailyName + '-' + shardNumberString
return dailyName, yearlyName, dailyWhen, yearlyWhen, monthlyWhen, monthlyShardName, monthlyName, yearlyShardName, dailyShardName

And here replace old code with something wrong ('=' should be ',' since list of arguments is returned):
dailyName = yearlyName = dailyWhen = yearlyWhen = monthlyWhen = monthlyShardName = monthlyName = yearlyShardName = dailyShardName = xxx(optionKey, when, shardNumber)

Discussion

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.