When writing a long scene that consists mostly of dialogue, I aim for the following structure.
*“My feet hurt,” **Skald **said.
“Oh, you poor baby,” Viva replied. “What’s wrong?”
“It’s been a long day.”
“Go on.”
“My feet hurt because it’s been a long day,” Skald said.
“Huh? That doesn’t make any sense.”
“What do you mean?”
“The fact that it’s been a long day doesn’t have any direct connection with how your feet feel,” Viva said.
HPL came into the room just then. “What are y’all talking about?” he asked.
“I’m not sure,” Viva said. “Skald was telling me that his feet hurt, but his explanation doesn’t make much sense.”
“Sure it does,” Skald said.
“No it doesn’t,” Viva said. “Just because it’s been a long day doesn’t mean your feet should hurt.”
“I have to agree,” HPL said. “What exactly do you mean, Skaldie?”
“I mean that I’ve been wearing new shoes all day long, and while they didn’t bother me at first, eight hours later they do.”
“Well, why didn’t you just say that?” Viva said.
“Because my feet hurt and that is distracting me,” Skald said.*
My idea here is that each time a character speaks for the first time, there needs t be a tag. If only two characters are speaking, then, after those two initial tags, I note who is speaking on every third change. But if more than two characters are speaking, I tag each change, unless one character addresses another by name in asking a question and the next speaker the character so addressed. I find this to be minimally intrusive, yet clear. I also avoid minimize tags like he asked, and she replied; those are allowed a maximum of once per page. And I refuse anything more elaborate, like “I explained,” except for comic effect.
An exception to this if if I have two characters with sharply different speech patterns. If, say I were writing about a scene with Spike and Illyria from Angel, I might not bother with any tags after the initial two, because Illyria’s speech is so distinctive. But if it were Spike, Angel, and Wesley talking, I’d stick with the pattern described above.
ETA: If I began a paragraph by noting what a character is doing, I consider that the tag and don’t include the “X said” (though I may use a “he/she said.” And I DON’T do paragraphs that describe one character’s actions but have another person speaking, because it’s ambiguous. Also, if two characters in the dialogue are the same gender, the tag is always “X said,” never “he said” or “she said.” I never want my reader to have to stop to figure out who is speaking. I hate that when I’m reading.