Tight coupling results from not using pure interfaces for everything... All parameters and return values should be pure interface types .. that way, all dependencies can be passed in as Fakes or Stubs .. resist the temptation to call constructors in methods.
That prevents coupling on an implementation level but not at a logical level. With TDD you can prevent both.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.